J4.95
My 1990
EXPLORING THE POWER
OF
SINCLAIR COMPUTERS
IE CAMBRIDGE Z88
Portable Power
THE SINCLAIR QL THE SINCLAIR TIM TS-2068
32 Bit Power House Versatile Desk Topper
In this issue. . .
UPDATE MAGAZINE CHANGES PUBLISHER
UPDATE MAGAZINE
513 E. Main Street
Peru, IN 46970
News and New Products
LKDOS SOFT-WARE
^HiiiitiiiumuL
LKDOS j
MAXCQM 3Q0/12Q0 baud Terminal/BBS
This full feature modem software lata you effectlvly link th* modam lo tha disk, so you can upload or
download flits larger than lOOK.Thls Itts you sand NMI saves and large text flits as wall as Basic or Coda
flits, which olhtr modtm programs couldn't stnd btcaus* of mtmory limitations. Also flits can ba stnt with
or without a Information htadtr (Spec-term compatlbla) .
It also has a 64 column display and Is tha only 2068 modam program that will run at full 1200 baud
without missing characters. Other features of tha tarmlnal moda art IBM graphic charactars. auto-dlaiar.
macro ktys, I10K disk bufftr for capturtd text, auto rtptat ktys.
Tht BBS Is tht most elaborate available for tha 2068 and allows tha ramota usar full acctss to tha disk
drivaa similar to a CPM BOS. Features of tht BBS art - 300/1200 baud, operation with fast rtponct tvan at
1200 baud, Passwords, priority levels. Ust lima limits. Multiple Message Basas. Uploads and Downloads art
not llmll.d by Memory. Dual Window Monitor screen. Interupt driven time out and Hangup protection. Also
Keeps a User log of callers Names and Activity on disk so a printer Isnl needed and Its easily customised and
expanded.
MAXCOM can be used with the 2050 modem or with the Z-SIO F1S232 Interface and a 300/1200 baud
modtm. (a version for the Aerco RS232 Is In th* works).
PRICE. $24.95
LARKEN DISK EDITOn
This program lets you examine or change any byte on a LKdos disk. It la useful In repairing damaged or
glltchad disks, changing the disk Name or head spaed ate. You can also examine the track map and disk Info
h,Therdocumentatlon for the disk editor also Includes Information on how to access LKdos from Machine
Code and Information on the structure of the disk catalog and data blocks.
PRICE: $15.00
SEQUENTIAL/RANDOM Access FILES
This utility Is a ram resident extension to th* LKdos operating system and lets you create, read from, or
write to very large data flies kept on disk. It uses the commands OPEN*. CLOSEll. PRINTn. INPUTl, and
INKEYSH to access the files from BASIC. There is also a high speed search command for finding a text string
within the data file. Using the TAB command, you can randomly access directly any record In a file.
The utility Is easily used within your beak programs and has a lot of uses, from storing large data flies,
creating large spell checker dictionary* or even converting you basic programs to an aacll text file .
This utility lets you take the limits off of th* data capacity of th* 2068 .Files on disk can b* hug* I
A ilmpl* data baa* program Is Included on th* dlak to demonstrate th* utility.
PRICEt $ 15.00
Coming Soon from Larken Electronics
• • The Larken Desk Top Publisher Produce high quality printing (like this page ) with an epson compatible
printer and LKdos. The entire Hl-res graphic page la kept on the disk and scrolling though the page Is at easy
as clicking the Joystick or mouse on the Icon type menu. Text and Graphic editing with multiple sized fonts
will also be featured.
»t Spell Checker for Tasword and M-Scrlpt This utility program will let you have your wordproc.ssor
text fll*s be checked by a 350K dictionary.
All Prices SUS - Specify type of drive when ordering.
LARKEN ELECTRONICS RR«2 NAVAN. ONTARIO CANADA. K4B-1II9
(6131-835-2680
2
SUBSCRIPTION RENEWAL
Please tear out and send in for your subscription renewal for
1991.
This is the LAST ISSUE of the 1990 subscription year.
UPDATE Subscription Renewal form and User Data Base.
1. Please enclose $18.00 for renewing subscription for year
1991.
2. Mail to: Update Magazine, P.O. Box 1095, Peru, Iff 46970.
3. Your Computer: QL TS-2068 Z88
4. If TS-2068 please check type of DOS: LKDOS Oliger
FD-68 TOS SPDOS
5. If QL please check: Trump Sandy CST intfc.
Unexpanded QL Addl Ram
6. Please check type of disk drive: 5 1/4" 3 1/2"
SS DS 360K 40 track 720K 80 track
7. Brand and model printer
8. Please print your name and mailing address or affix a mailing
label.
S18.00 a year
PLEASE PULL OUT AND SEND IN
WITH YOUR SUBSCRIPTION
RENEWAL
9. Update welcomes your constructive comments.
Please send your renewal to
UPDATE MAGAZINE, P.O. BOX 1095, PERU, IN 46970
Publishers- Frank and Carol Davis
3
fifaS5Ssii&£???!» DESKTOP PUBLISHING SURVEY
Machine op OS
Disk I/O
Printer I/O
flenco Compatible
64 Column Display
What You See
is What Vou Get
Works u/Entine
8 i/2 x 11" Page
Loadab le Fonts
Loads Zebra Icons
Loads SCREENSs
Resizes SCREEN*s
Word Processor/
Text Editing
SCREEN* Editor
Page Fonmator
Block Functions:
Cut, Paste.
Hove, Delete
Memory Usage
PIXEL PRINT
2868
By User
By User
NO
Half Page
at a Tine
s/
s/
NO
Taswopd
NO
NO
Almost All
some left
for I/O
PIXEL PRINT
5.8
2868
By User
By User
✓
NO
✓
NO
Mia Tasuond
and NScript
Over lay
All, plus a
32K extent .
or RAM Disk
PRINT FACTORY
1ST ED/PRESS
2868/Spec .
By User
w/in Progran
✓
Windowed
✓
Trans lated
PRESS Only
PRESS Only
NO
Companion Prg
NO
Almost
some
I/O
left11*.
Spec .
By Dealer
By Dealer
s/
NO
NO
Via
Word-Master
Extent ion
All, due to
memory
management
* NORD-M^STER COMES WITH IT' S OWN FONTS -4ND FONT PACKAGES. It WILL.
not load the st,4nd>srd 8 point fonts found in plxel print
or The Print Factory.
addresses:
IEL PRINT 5.8
WICHITA, KS 67207
THE PRINT FACTORY
BYTE PONER Mx4G^ZINE
ME/4C
1748
/1DOWVI
PICKERING, ON'
1G8
>A
WORD-MASTER
_-MNY
-ORD
CA 94061
Interested in Desktop Publishing?
Would you liKe more information about the
fascinating wopld of Timex and Sinclair
DesKtop Publishing?
The Sinclair DesKtop Publishing Journal is a
QUARTERLY NEWSLETTER ^PUfeLI SHED DISTRIBUTED
through UPDATE Computer Systems m>4s»zine, /4ll
-4NO DESKTOP PUBLISHING, WORD PROCESSING
OR GRAPHICS PROGRAM FOR THE TSS068 AND
Sinclair Spectrum computers /4re discussed,
REVIEWED -4ND EXEMPLIFIED WITH IN THE JOURNAL,
For more information oi
Publishing Journal
WRITE TO.'
n The Sinclair DesKtop
UPDATE Computer Systep
UPDATE Computer Systems
P.O. Box 1095
Peru, IN *46970
gnd PLEASE enclose a Self Addressed Stamped
nve lope for your response . TnanK you .
Bill Jones
1317 Stratford Ave.
Panama City, FL 32404
904 871 4513
Dear Friend,
T
Be Seein You
I dont mean Good-bye, for I'll be seeing you. My hobby is Sinclair
Computer Programming. I've had Apples, Commodores, a Coloco, an Atari, and an
IBM AT 286. I've always returned to the Sinclairs, I guess because of
"perestroka" , or the openness of the Sinclairs to the user and programmer. It's
just more fun to work with Sinclairs. Now that Frank Davis will be publishing
Update Magazine, I'll be free to devote more time to programming both the
TS-2068 and the QL. Of course there's no money to be made, but that aspect does
not matter. It's the satisfaction of creating and sharing with the user group
that keeps me motovated.
I've made many friends during the three years of publishing Update
magazine. Money cannot buy friends, which is the most treasured of assets. And
I'd like to keep in touch. Two friends are in trouble and I'd like to encourage
all to drop cards. Bill Pederson (WIDJUP) suffered a stroke that left him
physically impaired. Bill has contributed greatly to Sinclair Computing. Drop
him a GET WELL card at: Bill Pederson, 1120 Merrifield S.E. , Grand Rapids, MI
49507. Then, Don Lamen, a long time contributor of Sinclair Programs and a
main-stay of the SINCUS Club, is recuperating from a tripple by-pass operation.
I'm sure that Don would appreciate some encouraging cards: Don Lamen, RR-3 Box
3404, Windsor, NY 13865.
I will continue to submit programming articles to Update Magazine in hopes
that it will help Frank Davis to keep the depth of content that has been the
tradition built over the past three years. But there has been an even more
important tradition established which I hope you have appreciated, and I hope
will be continued. That is a sense of un-selfish giving and sharing amongst the
Sinclair User Group in North America. Update Magazine has sponsored a spirit of
cooperation between the users, the Clubs, the programmers, and the suppliers.
We are all bound together by a keen interest in hobby computing and the need for
cooperation to further our own hobby interests. Besides, it is enjoyable to
communicate and to share.
Now I'll end this epistle with a laugh. Pere' wrote from the hinterlands
saying, "I regret your demise--", followed by some appreciated laudable
comments. Well, Pere', let us know your secret of communicating with the
departed. We all need that information! I really do appreciate all of the
friendly letters received and hope to keep in touch with all. Be ah seein you
in the pages of Update Magazine. Good Luck, Good Health, and God Bless!
Sincerely,
Bill Jones
REPORT Off THE SINCLAIR EXPO Iff MILWAUKEE
As part of the team assuming the editing and publishing of
UPDATE, I thought I would take a few minutes to do two things.
One, I want to tell you about our recent trip to attend the
Sinclair Expo in Milwaukee, and second , give you a glimpse of
what is in the future for this magazine.
Carol and I had a rather hectic and traffic filled drive
past Chicago to get to the Sinclair EXPO, put on by SMUG. We got
there and with the help of Bill Angel got our station wagon
unloaded. After hurriedly changing clothes we barely got to the
banquet at the starting time. We were pleased to see so many
familiar faces, after all many of these people have made it to
all of the Sinclair Fests in the past, from Cincinnati, to Indy,
to Cleveland, to Wash. D. C. , and to Florida and the Great
fforthwest Shows! The people at SMUG were so right to call this a
family reunion. Many thanks to ffeal, Bill, Dick and the rest of
this fine users group. Sinclair users make good friends.
The banquet offered variety to eat and was done in a timely
manner by the hotel. And. . . of course we had pleasant company
for the banquet <actually the entire show, I met no Sinclair
user that I feel the need to complain about).
Carol and I picked up some really nice t-shirts, moment os of
the Sinclair Expo, which was truly a "family reunion". There
were seminars on Forth, Robotics, Modems, Computer Intelligence,
Quill-how to use it, Archive Program DBADDRES and Desk Top
Publishing. The one on desk top publishing was done by Mike
Felerski and Frank Davis covering the TS2068 and the QL.
There were some vendors that apparently felt they had no
need to attend the show for some reason or other. I wish they
had been there, but those who did make it had a profitable time.
Among those who were there were as follows: EMSOFT (Peter Hale
of Boston), MECHAfflCAL AFFIITITY (Frank Davis and Paul Holmgren
of Indiana), WOOD AffD WIffD COMPUTIffG (Bill Cable of Mew
Hampshire), ZEBRA SYSTEMS IffC. (manned by members of SMUG), Mike
Hammer doing Sinclair repairs and offering refurbished TS2068s,
and the following user groups. . . CATS, CATUG, DMA, GCSUG, ISTUG,
SMUG, SffUG. There were a number of people doing a flea market of
used hardware and software. Eric Johnson, who would have been
offering refurbished TS1500S and TS2068s and repair parts, had
major auto trouble part way there and did not show. Paul
Holmgren, the QUAffTA librarian was selling library disks. Al
Feng of Platypus Software was demoing his software (which is
quite good and worth the price) and Bob Swoger was offering
Logical 1, a must for Larken users. There is talk of doing the
next show in Chicago. If that is true, perhaps ISTUG and SMUG
can help out as co— sponsors and make it a really big show.
For those interested in finding out more about QUAffTA, QL
Users and Tinkerers Association, I suggest you contact their
fforth American Librarian. He can provide you with details about
their extremely large and useful library and how you can became
a member of QUAffTA. Send a SASE to Paul Holmgren, 5231 Wilton
Wood CT. , Indianapolis, Iff 46254. He can also be reached most
evenings (at a reasonable hour) by phoning 317-291-6002. In
addition to the library they put out a monthly magazine, from
England, of about 30 to 40 pages. And it is all QL. Back issues
are available by mail from the U.K. and at last report the price
for membership was about 17 English pounds.
6
What can we look forward to in the next year or two for
UPDATE? I for one have been proud of what has been done by Bill
Jones, so I am not going to go into phrases like "I hope to
improve" or " It will be hard to follow in the footsteps of".
Instead I want to say that Carol and I are prepared to deliver
UPDATE to yon in a timely manner. It will remain at least the
same size, with a few format changes as we experiment with
various desktop publishing programs. Barring death or severe
physical impairment ... this is what we want to bring to your
mailbox 4 times a year. With the help of many this will be done.
While we were at the Sinclair Expo we got a chance to speak
with Peter Hale, Bill Cable and Al Feng. They have all written
for the magazine in the past and have stated that they will
continue to support it. They are all writers and programmers
that I was glad to have support from. I have also heard by mail
from Bob Hartung, who will also continue to write for us, and
even sent to us updated copies of his programs. We have
already received articles and programs from other users who have
written for UPDATE before and from some new ones. It does
not look like we will be hard up for good material. Bill Jones
has told me he still will contribute material to the magazine
on the TS2068. That will, of course, be welcome. With the help
of these people we will continue the issue disk program and give
our Horth American programmers a chance to be heard from and
make a few dollars at the same time. I am a great believer in
exchange .
What will we be adding to the magazine that is new? A new
section dealing with Desk Top Publishing. This will be primarily
handled by Mike Felerski of Bottlecap Software, of Cincinnati,
Ohio. You will be pleased with his work. Also helping out in
this area we have had the offer of assistance from Bill Ferrebee
of Mountaineer Software. Bill has also started doing a column
for Vulcan Computer Monthly on Sinclair Computers. I will be
reviewing some European hardware and software.
Carol and I have already picked up some new subscribers to
the magazine and have started a vigorous campaign for more. Mow
we need to have all those who have not done so renew. A growing
readership is a good guarantee that a magazine will be there
waiting for you in the future. As long as the magazine pays for
itself, it will be there. I am looking forward to being
of service to you. I can often be reached evenings at
317-473-8031. When not there, I will have one of those nasty
answering machines there to take a message. Please don't ask me
to return calls at my expense, but do leave a number and an
address .
Ruminations Frd The |}L Editor
This will be the last rumination for me. I will
continue the Cable Column but give up the QL Editor
position for UPDATE when Frank Davis takes aver as
UPDATE publisher next issue. I was glad to give a
hand to Bill Jones for the past year but I feel that
someone else could do a better job. I am a bit
isolated here in the hills of Hew Hampshire and my
specialty with the QL is primarily database
programming with ARCHIVE. The QL is a complex
computer that has many facets. It will be beneficial
for all if someone else with a different background
takes over as QL editor. Although Frank may not
continue having a QL editor for UPDATE, I hope he
does. It is an important focus point because there
is not much QL specific coverage left and having
someone sound off on the QL scene keeps the vision
alive. I have great confidence in Frank Davis and
will help any way I can with the new UPDATE.
Peter Hale of EMSOFT and I made a quick trip by car
to the Sinclair Exposition in Milwaukee on June 1-3.
As usual Peter was very organized and I was a bit
disorganized. We both had vendor tables. He both did
just a little better than at the CAT's Fest last
year although the crowd was a little smaller. It was
estimated that 120 people attended. Being tied to my
booth most of the time I didn't get to attend any of
the seminars. The subjects covered included FORTH
programming, MODEMS, Desk Top Publishing (Frank
Davis), Computer Intelligence, QUILL and my DBAddres
program. Bill Heberlein, SMUG editor, gave the
seminar on DBAddress. I put many powerful features
into my program and I was impressed at what he was
doing with it. I got to meet old friends and make
some new ones. Frank Davis and his wife were there
and I got to talk with them about UPDATE. I also met
Paul Holgren who is the new Quanta Librarian for
Horth America and head of SHUG. I was impressed by
his enthusiasm. Frank and Paul will be putting a lot
of energy in keeping Sinclair computers viable.
Please support them financially by subscribing to
UPDATE and SHUG. I had a nice visit with Al Feng, a
fellow QL programmer. He are offering his just
released program ,QLUMSI, as an Issue Disk in this
issue. Peter and I were the only QL software
vendors. Paul Holmgren and Frank Davis had a large
booth and were selling used hardware and software.
Much of it part of Tom Bent's collection. There was
a large SHUG {Sinclair Horth America User Group) on
Saturday night. There was lots of energy and the
leadership seems dedicated and able to really get
the ball rolling with this organization. QL and 2068
people seemed to get along better than ever. Maybe I
was imagining things but there seems to be a large
increase in QL owners who were using ARCHIVE and
liking it.
This issue of update has the SECOHD installment of
Timothy Stoddard's TRUMP CARD HAHUAL. He does a
great job at explaining the directory structure
features of TK2. Peter Hale has some tips for the
home office. I begin a new series on ARCHIVE by
tackling database concepts. Al Feng lightens us up
with a backdoor approach in his ARCHIVE: The FIHAL
FROHTIER. David McCall's last Hindow Defining
article and Peter Hale's 2nd TEXT87 article will
appear in a later issue.
ARCHIVE: The FIHAL FROHTIER
by Al Feng
All right. I'm probably the last QL user to work
with the ARCHIVE/QLDB data base program. The
"problem" with ARCHIVE is that the HELP files
really don't "help" you with the program's syntax.
Until you know, you don't know. And, you really
can't "fake it" the way you can with the other
three Psion business programs. ARCHIVE'S syntaz
is very specific.
CREATE, FJD CREATE. Are we playing God with the
Universe? If you've gotten far enough to see the
blank, central window {i.e., the "void") with a
red DOS-like prompt in a lower CQMMAHD HIHDOH, you
already know that you can't just begin typing in
any of the "words" seen in the PROMPTS window at
the top of the screen at the COMMAHD LIRE. You
have to know exactly what-and-how you want to
define ALL the FIELDS before you start to work,
otherwise you're only going to have trouble later
on when the time comes to fill in your RECORDS.
Perfection counts.
The following, alternate method for setting up an
ARCHIVE data base should give all novices a better
{i.e., EASIER) idea of what is going on. Those
who consider themselves to be "power users" may
wish to take note as they may not be aware of know
this flexible method for CREATing a data base's
structure.
First, forget everything you've heard about a data
base being like a set of file cards. Ton just
cannot scribble-and- erase here, there, or
anywhere. He may be better prepared if we think
of a data base's format as being akin to a
governmental form {i.e., "Rigid").
Unlike a word processor where you can
twiddle- and- tweak with ideas for paragraphs, all
the FIELDS of a data base must be pre-DEFined
before you begin putting in any of the RECORDS.
Power users too familiar with setting up their
data bases are probably saying: "Big deal!" But,
a computer is supposed to make things easier. Hhy
should one first need to consolidate (m)any
randomly jotted notes onto a single sheet of paper
prior to beginning to ensure that everything that
must be included is? It would be better if any
data base could be constructed on-the-fly.
Row, consider your data base as being a matrix.
Uh oh! You may recall that calculus was a
prerequisite for the course on matrices. Don't
worry. We've all seen examples of matrices since
we were in grade school. The "multiplication
table" and the "mileage between cities" chart(s)
are common examples of matrices. In a meaningful
matrix, the data in the middle of the grid can be
correlated to the labels of the 'X' or *Y' axis.
For the data base, the 'I axis' represents the
FIELDS, and the 'Y axis' represents the RECORDS.
Because of the structure of the Psion programs,
you can first set up your data base in ABACUS by
constructing a valid matrix and then IMPORTing it
3
into ARCHIVE. For some of you, a light should
hare gone on in your head. For the rest, read on.
Just LOAD the ABACOS/QLSS spread sheet program
into your QL and start typing in the label names
for items you think you may want to track in your
data base. Ose the fol losing example as a model ,
beginning in CELL 'AT.
A | B J C ! D '
Star RtAccnsn declintn magnitude
Achernar lh 35m S 57 35 1
Acrux 12h 22m S 62 42 1
All the CELLs are "text" with the exception of
'D2' & 'D3' which are "numerical" values.
Hhile you can change the names in the columns
after you've input all the FIELD label names, some
foresight helps (corrections can be made by adding
columns and inserting the forgotten, or misplaced,
label in the correct column). The better
organized you are, the quicker the entire process
will be.
Depending an the RECORDS, you may wish to do the
bulk of input from the matrix. This is especially
applicable if you are still using microdrives for
storage as this will circumvent repeated media
access during initial data IHFOT.
After setting up the matrix's framework, you may
decide that you would rather sub-divide
"declination" into two parts:
A
! B
! C
D ! E
1
Star
RtAccnsn dclH
dclD magnitude
2
Achernar
lh 35m
S
57 35 1
3
Acrux
12h 22m
S
62 42 1
4
Agena
13h 58m
S
60 2 1
5
Al debar an
4h 31m
I
16 22 1
6
Altair
19h 47m
I
8 40 1
7
Antares
16h 25m
s
26 16 1
8
Arcturus
14h 12m
19 32 0
9
Betel geuse 5h 51m
I
7 23 1
10
Canopus
6h 22m
s
52 39 -1
11
Capella
5h 11m
I
45 55 1
12
Deneb
20h 39m
H
45 1 1
13
Fomalhaut
22h 53m
s
29 59 1
14
Pollux
7h 30m
I
32 2 1
15
Procyon
7h 37m
5 20 0
16
Regulus
lOh 4m
12 18 1
17
Rigel
5h 11m
s
8 16 0
18
Sirius
6h 42m
s
16 37 -1.6
19
Spica
13h 21m
s
10 47 1
20
Vega
18h 34m
I
38 43 0
This was done by using:
<F3> (g)rid
(i )nsert
(cjolumn, at C
to insert a 'column C\ The labels, as well as
data, in columns 'C & 'D* are then amended to
suit your current specifications.
All right. You've gotten this much done. He
what? Simply follow the standard EXPORT
(F)iles
(E)xport
<EHTER> (for data)
range (<EITER> for default)
(c)olumns
to (e.g., 'STARdata').
Bote: the default '_exp' extension is
automatically added to the EXPORTed file by the
So, now that you've created an IMPORT/ EXPORT file
you'll want to switch to ARCHIVE. But, before you
QUIT ABACOS, SAVE the file as an '_aba' file. Go
through the SAVE sequence and call the file
'STARdata(_aba)\
Bow, QUIT the ABACOS program and LOAD ARCHIVE.
Then type:
Import "flp2_STARdata_exp" to "STARdata"
<EITER>
The QL will CREATE the file an your default
medium. When the cursor returns, type:
display <EKTER>
and [ta-DAH!], you should see your newly created
data base file (see below) :
Logical nai
Star$
RtAccnsn$
dclHS
dclD$
magnitude
: main
: Achernar
: 1 h 35 m.
: S
: 57 35
: 1
How type: next <EHTER>
and, you should see the second record (i.e.,
"Acrux"). If you type:
last <EHTER>
Tou should see the last record which you typed in
(in this example: "Vega"). How, if you type:
DIR "mdv2_" <EHTER>
you will get a DIRectory of your data disk. lou
should see files named:
'STARdata_eip'
'STARdata_aba'
'STARdata_dbf
If you ever need to add more FIELDS to your data
base (eg., "commentlS") , either go back to the
original 'nnnn_aba*, or EXPORT the current
'nnnn_dbf' to ,nnnn_imp' (where 'nnnn_ext' is the
name of the appropriate file).
Pram here an, using ARCHIVE is pretty straight
forward. To add new data, type "alter" to enter
the correct mode for 'ALTERing' (amending) the
! in the data base.
: to CLOSE the RECORD file before turning
off your QL (ARCHIVE automatically CLOSEs the
current file when you QUIT the program).
HAPPY TRAILS, AID COMPUTIHG, TO 100.
9
The C.A.T.S. Newsletter
The following three articles are re-printed from the CATS
NEWSLETTER. To Join CATS and receive this nice newsletter, send
$15.00 US Check or MO to: CATS Newsletter, PO Box 11017, Takoma
Park, MD 20913. There are other benefits. _BJ-
The C Column
By Tim Swenson
As promised last month, I'll
talk about how C accesses files.
The simplest way to discuss how
C handles files is to take a look
at a C program that uses it. Look
at program number 5. This program
asks the user for a file name. It
then opens the file, reads in a
character and prints it out the
screen. This goes on for the
entire file.
The program declares a character
array of size 20 to be hold the
file name. It then declares the
integer fd to hold the file ID.
When a file is opened, C assigns a
number to it. This number is
returned from the fopen command to
the variable fd.
Note the syntax of the fopen
command. The file name is sent
into the function along with a
string that specifies if the file
is for reading or writing. If we
wanted to open a file to write to,
we would have used "w" instead of
"r*.
The next couple of lines checks
to see if the file was opened
sucess fully. If the file was not
opened (there was some error like a
bad file name) fd will be returned
as NULL (a predefined constant) .
Instead of using getch the
function getc is used. Where getch
defaults to the keyboard, getc
needs a file ID to know where to
get it's incut. In our case we use
fd.
We exit the while loop when the
program reaches the end of the file
(EOF) . After the program exits the
while loop, we use the f close
function to close the file. We
must tell fclose which file to
close. If we do not close the
file, we may loose the file.
/* prog 5 */
♦include <stdio_h>
mainO {
char fileC201;
int c, fd;
print f ("Enter file: ") ;
gets (file) ;
fd-fopen (file, "r") ;
if (fd — NOLL) {
printf("Fiie open Error*);
abort (1) ;
i
while ( (c-getc (fd) ) !ȣCF) {
.put char (c) ;
QLSmaff-C Companion
By Tim Swenson
I have been using the Small-C
compiler on the QL for some time
now. I have found the
documentation severiy lacking .
Knowing that other users are
probably having the same problem, I
decided to document the solutions
to ' some of the problems I ran
across." I also looked into other
versions of Smaii-C for other
computers. A copy of thi3 document
is available from the QL- library.
The library has a hard copy of the
document and a Quill file. The
hard copy was printed out using a
laser printer and looks good. I've
utilized multiple fonts to enchance
it's looks.
When looking at the CP/M version
of Small-C, I found that the QL
version did not come with all of
the functions found in most Small-C
compilers. I typed in the
functions that I could convert and
created a new library. I tested
the library generator with this new
library. The library is also
available from the QL library. The
functions are documented in the
Companion documentation.
Pm afl for computer dating,
But I wouldn't want one t
Additions to the QL Library
By Tim Swenson
Over the years I have written a
number of usefull programs for the
QL. Some of them I have used in
articles for numerous newsletters.
I have donated them to the club' 3
QL library. I thought I would let
users know about the more
interesting and useful!.
Lister - This program reads in a
SuperSasic, Pascal, or C program
(actually any text file will work) .
It prints the program to the
orinter with page breaks and the
file name at the top of each page.
It even has options for NLQ, bold,
etc, type print. It is set up for
an Epson compatable printer.
QL crypt II - This programs reads
in any file and encrypts it. The
user enters a password that
controls how the file is encrypted
and decrypted. The output file may
look like garbage, but when
decrypted the original file is
returned. Even works on executable
files. It is very secure.
Calc - This is a small
calculator program that works in
decimal, hexidecimal, and binary.
Lets you add any of the three bases
and convert between them. Easy way
to convert between base3. If
compiled, it can be a nice pop up
type calculator.
Maillist - A menu driven Archive
program for maintaining a mailing
list. User can add, edit, delete,
and print entries. Has a nice data
entry screen.
All of the programs have a Quill
file that describes the programs
fully. All of the documentation is
1 to 5 pages long. Maillist has
longer documentation. 3e aware
that the software has my old
address in California. I've been
too lazy to update them.
See Tom Bobbins for getting
copies of the QL Public Domain
library .
More On Benchmarks
By Herb Schaaf
Duane Parker had the time down to
23 seconds using Forth in bis
January classic on benchmarking
with Pascal, QL-Super3asic, etc.
The Small-C QL combo does it in
IS seconds ( 14 with Lightning
installed) . An IBM PS/2-30 and the
same (well, nearly the same)
source code using Turbo-C took S
seconds. Mix-C & IBM did it in 5. A
Toshiba T5200/100 & Turbo-C took 2
seconds .
When ported over to the VAX- 3 650
and timed it came back as 0.0
seconds, so I extended the run down
to I; then it took 0.2 seconds.
Times to go down to 1 are:
Turbo-C S T5200 22 3ecs.
Mix-C i IBM 42
Turbo-C & IBM 55
Smali-C & QL 155
with QL S
Conqueror Mix-C 1390
Turbo-C 2070
Now as to costs:
Hardware
QL systems SS hundreds
IBM systems S thousands
75200 S -an thousand
VAX SShundreds of Thousands
Software
Sraall-C S 1 (cost of disk)
Mix-C 3 20 i BEST 3CY: : )
Turro-C 3 100 (discount:
jNIX Z S a lot aora
,r.t.t fy
10
May 13 1990 10:30am
Small-C ""banchmarjc program by Duana H. ?arxar
Raf: CATS Sewalattar Jan 1990 pagaa 6-3.
priatf ("you") ;
at («tdout,17,5);
flaah(«tdout.l); ,
iax(atdout,8);
printf ("any kay to
gat char 0 ;
*<4);
£Ia«h(at<
rt.O);
aainO
char c, string £20];
int start, stop, inda
int taatfactor, tfsq;
int seca, 41(2], d2[2
int ainval, poa;
autnval - 0;
pes - (MAX/100);
> 7hm and of the :
: source cod- for dpb«nch7_= May 13, 1390 11am
i and/or strings
j; /* handy integer raiuea
/• taatfactor and its squara
/* uaad in liming
' more intagara
l* int(sqrt(MAX))
lwhilar7(«invai>0) + (minvaKMAX) + (index ■
/* initializing for claa
orintf ("This is a 3ma_l-C program\n") ;
printf ("of a benchmark taat by DH ?arxar\n");
printf ("see CATS Howalatter o£ January 1990\n") ; .
printf ("\nStop calculation at what 7alue laaa than *d ?\n ,XAX) ;
gata (string) ; /* when to stop ? */
j - stxl«n<»tring);
rtrncpy(c;string,l);c); Mk„ 3trin, ^ Stager •/
£or(i-0 ; i<j; i++) /* chaclea ior corract input */
{
. 5) 44 (indax
: a digit ;
• 1) 44 (start>3) )
if ( (minval>-KAX)
(minvaKl) I I (indax — 0) )
printf ("\n\nl K V A I. I 0 !!-);/• arror trapping V
print£("\n\nany xey to try again \n q to quxt );
c - getcharO;
switch (c)
isa 'g/ : xcit () ; /* 'fancy' axit «/
cla (stdout) ; /* clear screen •/
ormti ("Ready to find primes from 32767 to *d\n" , aimail ;
printf ("any xey to begm\n") ; /* inform and wait for »/
gatehax () ;
*dl - datad ; /* starting tuaa */
for (indax - MAX; indax >■ minval ; indax — 2)
printf !"\n") ;
)
while ( indax < z
(
for( j - 0; j < * : :
(
Zti
tfi
teatfactor — >
if (taatfactor — 1 44
printf C*Sd", indax) ;
' for( j-3; ( j <- taatfactor ); j +- 2 )
if ((indax * j)— 0) /* not prima */
breajc; . .
if (j >- taatfactor) /• is prima */
printf ("*fid", index) ;
)
if (minval < 3) /* to catch 2, */
{ /* tha even prime •/
printf ("%6d", 2);
1
•d2 - dataO; /* checxs time of finish
sacs - d2[ll -dlCll-- !* simpla diffaranca
prxntf ("VnRuntiae - %d seconds in Small -C\n", sec:
printf ("\nany )cay to exit");
gatehax () ;
xcitO;
t()
inJctatoout.2) :
*rash< stdout. 1) ;
ilasa (stdout, 3) ;
a»ixet*tdout.0,0)
ac(atdout,12,15) ;
inJe(atetout,4);
Dealing With The BBS
Bj Mark Fisher
GETTING ON THE AIR
What you'll need:
This will take your computer,
a terminal program, and a MODEM.
For the 2063, the most "common
setup is the 2050 (Anchor)
MODEM, along with SmartTerm II.
For the QL, the horizon is wider
- any "external" MODEM will work
at 1200 3ADD. For terminal pro-
grams, again, the choice is
wider, with QL Term, QLink,
QL-52 being the main contenders.
(If you want 300 3AUD compati-
bility, you'll have to do more
work; i.e. the Modaptor and
QCode software)
Now you'
the pieces:
have to connect
2063 Plug the 2050 into
the expansion bus in the back of
the computer, and plug its
adapter into the wall.
QL Get a connecting cable
to bridge the gap between the
DB9 connector on the QL and th e
DB25 on the MODEM.
Using the software:
Load the software. If you
have the SmartTerm II cartridge,
that's already happened by the
time you see the first screen.
QL orograms are nearly that sim-
ple*.
Terminal programs must make a
distinction between input that
controls the operation of the
program, and input that i3
intended to be sent out the port
of your computer. The usual way
to describe these choices is the
term "mode". "Command mode" con-
trols the operation of the ter-
minal program itself, while
"terminal mode" sends your input
out the serial port. When you
first get on, make sure your
terminal program i3 saving
everything to its buffer. This
will let you review what hap-
pened after you disconnect. ?ou
inay want to 3ave the (I)nforaa-
tion files as permanent refer-
ences .
Depending on your particular
setup, you may dial the BBS via
your phone, or through the auto-
dial option of your terminal
program. Many external MODEM'S
can be dialed by typing
ATDP5880579 from terminal mode.
When you connect with the
BBS, you will see a prompt to
set the date (this is an addi-
tion I've made to get around the
lack of a clock on our machine) .
If you get something wrong,
you'll be prompted again. Don't
worry; the computer has plenty
of time, and you can go around
as much as you like. Next, you
will be asked for your name. If
I've guessed the spelling of
your name correctly, you'll be
asked for the password. The
default password is VERNON, but
you should change that as soon
as possible. (To encourage you
to do so, I've also set your
message reading width to 20. You
can change both preset values
from the (U)pdate record menu
choice.)
EXPLORING
Once you get past this,
you'll be IN the CATS BBS. There
are rib* time limits here. The BBS
will not penalize'- you for making
a mistake. The worst thing that
can happen is that you'll have
to 'unplug' your computer. The
' BBS will detect this, and re-set
itself for the' next caller.
If you think of the BBS as a
house, there are three main
wings. They are the Main menu,
the Mail menu, and t he files
system. Entry into each is her-
alded by a specific "phrase. You
can think of -each phrase as
being carved over the entrance
to the wing (one of the weak-
nesses of this metaphor is that
the actual location of the
phrase will be in the bottom
left corner of your screen, not
top center) .
The Main Menu Wing:
"Over the Door", you'll see:
PBBS Menu, Commands are
This is the general purpose
section of the BBS. Here, you'll
find out about general (Infor-
mation, recent uploads, other
users, and your personal custom-
ization values. You can also do
some basic chores, such as tog-
gling the full display of the
menu or the [more] prompt,
(Y) akking with me, (J)umping to
CPM, switching to the "(M) ail
menu, or saying (G)oodbye.
The Mail Menu wing:
Over the door of this wing is :
Folder: General
MAIL Menu: Commands are
This wing offers ways to
delve through the message base.
The most basic are (E)nter a
message and (R)ead one. In addi-
tion, you can 3can the headers,
either for a given subject, or a
list of all subjects. As the
message base grows, it will get
harder to scan everything. To
deal with this, the message base
is divided into 9 FOLDERS. 3y
switching between the folders,
you can view all "FOR SALE" mes-
sages, all 2068 messages, etc.
There are sub-menus that
appear as you go through the
more complex operatons: for
(E)nter, there is a menu that
appears when you press <ENTER>
twice. It offers you the option
to (L)ist, (E)dit, or Oontinue
entering the message, or (S)ave
the message as public or pri-
vate.
The CPM Attic:
Over the door is:
B3>
The last wing of the "PBBS
house" is the files area. The
rules here are different . You
can think of it as the "attic"
of the system, storing all -hose
things ycu MIGHT use. Thera ara
no menus here - :.r.staac there
are a number of discrete com-
mands you can invoke. CPM inter-
prets the word following the B3>
prompt as the file name of a
machine code program. There is
room after the name for further
data - see the examples below.
When you are adding that extra
data, separate it from the com-
mand with ONE SPACE. The most
basic are:
"BYE" Hangs up the phone and
resets the BBS f or the next
caller.
"PBBS" Returns to the Bulle-
tin board program, so you can
leave a message about what you
found up in the CP M attic.
"D" This is the Directory
command - producing an alpha
sorted list of files.
"USER xx" This changes the
user area (C PM's sub-directory
method)
"TYPE-DN (your filename
here)" This will type to the
screen the contents of the file
you specify. If you have cleared
your capture buffer and opened
it, you will end up with a copy
of the file you requested. If
you use TYPE-DN on COM or DOC
files you will see some inter-
esting screen art, and possibly
hang up your computer, but it
won't hurt the BBS.
"TYPE-UP (your filename
here) " This program will create
a new file on the BBS computer,
and store whatever you send to
it there. You can use your ter-
minal program's ASCII file
transfer routines to send your
ASCII files to the BBS. It will
be closed when you send a con-
trol-Z, and after a few seconds,
you'll see the 33> again.
"XMODEM (your filename here) "
The is the big gun of the files
area. This program can work with
the Xmodem part of your terminal
program to transport ANY file to
or from the BBS. Typing XMODEM
alone will give you a short list
of your options. To use it, type
"XMODEM (your filename here) " at
the B3> prompt. You will then
enter command mode of your ter-
minal program, and start up its
xmodem file transfer procedure.
The two programs will work
together to shift the file
between the machines . XMODEM
knows that you will take a while
to get your end going - there's
a delay built in. If you take
too long it will abort the
transfer, but you can always try
again. The transfer may also be
aborted if there are too many
transmission errors - often a
second try will work fine.
"DEMO CPM" To see several of
these commands in action, type
DEMO CPM. There is an automated
demo of the basics (I've put in
a place for your input - don't
just sit back!) .
TRY DS OUT!
These articles fro* the CATS
Newsletter were photo reduced
in order to get as much of a
sample of the depth of articles
given in each NL issue.
The Newsletter is printed in
a nice size readable print.
All QL and TS-2068 users
would do themselves a favor by
subscribing to the CATS
Newsletter.
12
THE Sinclair Z88 Small But Powerful
BILL JONES HAS ASKED ME TO WRITE A
COLUMN DEMONSTRATING HOW EASY IT IS
TO USE THE Z-BS'S FABULOUS WORD
PROCESSOR TO MAKE MULTIPLE COLUMNS
AND TO MIX TEXT AND SPREADSHEET SLOTS
IN THE SAME LETTER OR EVEN ON THE
SAME LINE. IT IS EASY, EASY, EASY! !
FIRST, I CHOSE A TYPE WIDTH, ELITE,
THAT LETS ME MATCH UPDATES 2 COLUMN
PRINTING AND THEN MODIFIED THE COLUMN
WIDTHS IN PIPEDREAM TO MATCH. SECOND,
I DIVIDE EACH COLUMN WIDTH TO ALLOW
MIXING TEXT AND SPREADSHEETS LATER.
THEN, IN THE COLUMN BETWEEN THE TWO
COLUMNS, A MARK, OR LETTER IS PLACED
TO ACT AS A WALL FOR JUSTIFYING THE
COLUMN TEXT. COPY THIS WALL AT THE
END OF THE SECOND COLUMN. AFTER THE
TEXT FOR BOTH COLUMNS IS DONE, AND
YOU HAVE JUSTIFIED THE TEXT, YOU
ERASE THE WALL 'MARKS'. THIS IS
EASIER OF COURSE, IF ALL YOU ARE
DOING IS JUSTIFYING 2 COLUMNS, NONE
OF THIS EXTRA PLANNING IS REQUIRED.
TO MAKE THE BOTTOM PART OF THE LETTER
INTO A SPREADSHEET, YOU CHOOSE WHICH
SLOTS TO MAKE EXPRESSION SLOTS AND
THEN MIX TEXT AND/OR NUMBERS, AT
WILL! !
NORMALLY THE MONTHS WOULD BE ON THE
LEFT, BUT, SINCE THIS IS DESIGNED TO
FIT IN THE SPACE FOR 'UPDATE', I
MOVED THAT COLUMN, TO THE COLUMN
BETWEEN THE 2 COLUMNS. I THEN MADE UP
SOME NOS. FOR THE SPREADSHEET. THERE
IS NO LIMIT TO THE WAYS YOU CAN
MODIFY A PAGE TO SUIT YOUR NEEDS. YOU
CAN EVEN ITALICIZE AND/OR UNDERLINE
YOUR TEXT WORDS. YOU CAN ALSO DO H*0
X*, lower case, AND double width as
shown here ! !
The column between the 2 columns and
the wall on the right, were made in 5
seconds with the replicating command,
and erased in 5 seconds when no
longer required. This could also be
done manually without being fancy. I
can put the RENT -from the spreadsheet
inside my text here if i choose to;
RENT = $2200 by using the 'field'
marks around the slot. If the rent
were to change in the expression slot
it would automatically change in my
text above!! Any mistakes, changes in
the text can be re-justified by using
'diamond R' , at the beginning of each
paragraph. There are so many word
processing commands that usually
there is more than just one way to
accomplish your task. There is no
training required for any novice to
sit down and type an ordinary letter!
Just use it like a typewriter that
thinks for you.
The slot commands for USABLE PROFIT
slot J48, are B48+C48-SUM<D48H48> .
This tells the computer to add the
amount in Jan sales, and subtract the
values in the slots D thru H, and
print the answer in slot J48.
Replicating automatically takes
care of the remaining months, as many
as you have.
You can pull any text or number
from any expression slot and have it
print itself anywhere in your letter
as long as you set your field spaces
properly. FANTASTIC COMPUTER!!
DOMINO CUBES 355 W.39 ST
NEW YORK 10018-1401 N-Y-
MIKE FINK 212 971 5638
SOFTWARE Z-88 ADV'G
SALES SALES RENT COSTS MPS WAGES SALARY
$250 $1200 $2200 $300 JAN $0 $200
$500 $2400 $2200 $900 FEB $800 $500
$1000 $6000 $2200 $1250 MAR $1200 $1500
INVEN- USABLE
TORY PROFIT
$2000 $-1250
$2400 $-1500
$2900 $850
COLUMN LABELS AND WIDTHS ARE SHOWN BELOW ONLY FOR CLARITY (A omitted)
B C D E...F G H I. J
11
ED IOTE* ql and TS-lHi lUvu: Tkii U the beU
cuvtUU that I've wet mead about Computus in. genual
and tkti*. but a&ei. Two data. Bait 4o4tm*u 4ox the
TS-lHi ax*, given in tkU Uiae. TkU axtitU mil
kelp to andeutand tneie and all otnee typci o4 data,
that a compatsx tan be tuid to manage. _BJ_
By Bill Cable
ARCHIVE SERIES - PART 1 : DATABASE COICEPTS
Starting with this UPDATE issue I am going to begin
a multi-part series that will explore database
concepts and uses with particular emphasis on the
ARCHIVE Database System on the QL. This will include
developing useful programs to illustrate techniques of
ARCHIVE programming and database techniques. I firmly
believe that ARCHIVE is one of the best database
systems available on any computer and potentially the
most useful program for the QL. An active group of
ARCHIVE users/prograamers will go a long way towards
preventing the QL from becoming history.
I will try to keep each column somewhat
self-contained so that a reader will be able to jump in
at any point. I will not explain in detail how to use
the ARCHIVE programming editor each time. Please refer
to the April 89 Cable Column for my tutorial on using
it. My other UPDATE articles on ARCHIVE will be handy
references also. If you don't have these back issues of
UPDATE you can order them from Bill Jones, 1317
Stratford Ave., Panama City, PL 32404 ({$18.00 for Year
Group of 4 issues, 1988, 1989, 1990)). These back
issues of Update Magazine are chock full of goodies and
well worth buying. I will also put all my ARCHIVE stuff
together. You can order the collection directly from me
for $10.00. Specify whether you want it in printed form
or on DOC files on 5.25 DSQD (720k) or 3.5 DSQD (720k).
I will also include some extra goodies on the disks.
The path and duration of this series depends to a
large extent on my sense of what the readership needs
and desires. So feel free to write and help give me
some guidance. I also want to emphasise that this won't
quite be a formal course in database theory. Although I
have access to a few books an the subject far
reference, the ideas expressed will be my own opinions
and may not totally coincide with an academic treatment
of the subject. In fact much of what I am going to say
is ad lib for the purpose of stimulating interest and
may strain the limits of credibility.
Many QL users have used the ARCHIVE Database System
and liked it but the vast majority have not tried it or
have abandoned it at an early stage. I think there are
3 stumbling blocks keeping people from using a database
system such as ARCHIVE. First, many people don't know
what a database is or how it can be used. I believe
that all but the most casual computer user can have fun
with and save a lot of time using computer databases. I
will try to convince you of this in this series. The
second stumbling block is that to use a powerful
database system like ARCHIVE in its most basic and
flexible form requires learning how to use its
language. And ARCHIVE'S language has a lot of commands
and functions. This is both good and bad. Lots of
commands means lots of power but it also means more to
learn. Fortunately it is a straight forward language
similar to but probably easier than SUPERBASIC. This
series will explore the main features of the language.
The third stumbling block is that it takes serious work
to type in all the information in a typical database.
Luckily we have one database, gaxet_dbf , given to us to
play with. He will also explore ways to capture data
from others sources. It is sad but true that for most
databases getting the data into the database is the
hard part and there are no shortcuts.
I will begin at the beginning : what are databases
and why do we use them.
1, What is a database? 4 dmnuon otaeM***
U: a collection o4 lUejal data, that U given a
tokeunt UvLctaxe and kept in a convenient location 4o
it can be aAed in a mom that 4avc4 time and cUont.
I think this is a pretty clear definition that
doesn't use any obscure computer lingo. The terms
'useful data' and 'coherent structure' may be a little
vague. The examples below will help illustrate what I
mean by them. Data may be textual in form or numeric or
both. The definition stresses the main points for using
databases, namely to save time and effort when
examining data. As you will see, I have chosen my words
so that practically everything is a database when
viewed with this definition in mind.
2. Hhat are sue conn databases? «,
should be considered our most primal database at least
for written information. It consists of the 26 single
characters (really 52 considering upper/lower case) we
use to spell the words of our language. The coherent
structure of the alphabet database is its order.
Without that order we would have a hard time listing
them or keeping track of them. And we wouldn't have a
convenient way of ordering words either. Because we use
this database so much we have memorized it so we don't
really need to keep it anywhere except in our heads.
The namben 4fUem is another primal database and is
peculiar because it has infinite amount of data.
Numbers have very specific rules of construction and
order. He can construct them using 0-9 and He have
memorized these rules and don't need to store the
number system anywhere except our heads. Most other
databases we use are are constructed from the data of
these 2 databases.
A phone book is a database. It is a collection of
data (names, addresses, phone numbers) listed in a
book. They are listed with alphabetic order of last
name, first name. If the listing was random the phone
book would be almost worthless. Even so, there would
still be a structure because name and address would be
in one column and corresponding phone number would be
in another column. If we took away even the column
structure so they were butted up against one another
then it would start losing its database property. All
the data would be there but having no structure it
would be virtually useless.
A diction*** is a database. It consists of all words
of our language with their definitions listed in
alphabetical order. It allows us to quickly look up the
meaning of a word.
A book index is a database. It consists of important
H
words and terns used in a book and the page number
where they occur. They are also ordered alphabetically.
A cktdtbook is a database. It hopefully consists of
records of each check with the number, who it was
written to, the amount, the date, and perhaps a
description of its purpose. It is a database that has
both textual and numeric data.
Any qnapk is a database. It consists of a set of
pairs of data displayed in a visual format. At least
one of the components is numeric data. A graph of the
daily stock market performance is a familiar example.
It consists the numeric value of the daily DOW index on
specific days.
A mtkemtiaU (stssila, is essentially a shorthand
form of a database. It specifies the structure of the
database and the data elements of the database are
implicit numbers. Thus, y=sin(x) gives us a database of
infinite size over the real number system.
Even this Cable Column or any written information
that has meaning to the reader could be called a
database because it is a collection of words (data) put
together with a coherent structure of meaningful
sentences and paragraphs. We generally write things
down to provide a quick and easy way to examine the
information contained therein.
Each example above is a nan computer database that
we use in our daily lives. They are databases stored in
our head or written down. We don't usually think of
them as databases but they satisfy my definition. These
examples have many implicit rules that we never give a
second thought. When we pick up a phone book we already
know what it is and how to use it from past experience.
Oax bmai is the model and interpreter of database
systems. It has some inborn ablility for organizing our
perceptions when we are born and our culture provides
the other necessary tools, especially a language, for
each of us to develop a biochemical database handler in
our head. Everything our senses encounter automatically
gets processed by our brain and stored in our own brain
databases. Its structure and rules are not really known
to us although we know how to use it. It works best at
recalling general information and usually has trouble
recalling large amounts of data with exact precision.
That is one reason we need external databases. Another
is that there is more data out there than we have time
to personally absorb so we need a way to examine only
what we need quickly. A database is a good way to share
information with others.
Using something as a database just means seeing its
data from a certain prespective. Trying to make use of
its underlying structure. When we design databases we
are essentially trying to make external extensions of
our brain to make life a little easier. I want you to
appreciate that working with databases is an exciting
area of endeavor. It is closely tied to how our brain
works and what intelligence is. It's a field that has
been greatly expanded by computers with lots of new
frontiers to explore.
4. Copters and Databases; Database systems have
been around a long time in our heads and in printed
form. But humans are always trying to do things faster
and with less effort. When electronic technology
reached a necessary threshold the computer was created
as an electronic time and effort saving device. I would
argue that by my definition of a database, computers
are really database machines. Computers store data with
a coherent structure so that it can be examined in a
way that saves time and effort. At first computers
were used for mostly numerical applications but
remember, these are really databases with a special
structure. As we have become more experienced with
computers we have been able to also apply them to
textual data.
Why are computers so useful for databases
applications? The computer compliments our brain
perfectly. It can stare vast amounts of data with any
structure we design. It can access that data exactly
and with great speed. So the computer becomes an
extension of our brain in handling data much as an
automobile is an aid to our feet in covering distance.
In fact many things we do with computer databases save
so much time that it would be totally impractical to do
them without a computer. Some of the more obscure ways
our brain is able to organize data still has not been
duplicated on a computer. I suppose that when we can
duplicate all of the data handling functions of the
brain we will be close to having a thinking machine.
I should also point out a common abiguity when
talking about computer databases. Besides using the
term database to refer to the collection of structured
data in a file, we often use it to refer to the
database system that manages that data. I often refer
to ARCHIVE as a database. But I should refer to it as a
Database System which includes a program to handle a
certain type of database and a language for writing
even more specialized programs (procedures) to
manipulate those databases, lot all computer database
systems include a language. Unlike a written database
like a phone book in which the rules for using it are
in our head, a computer database is managed by a
special program which under tands how the data is
structured. We can't do much with the data without that
program. I will try to be clear about whether I am
talking about a database (the data in a file), a
database system (the main executable program), or a
database program written in the language of the
database system.
All tint dubdHUU mentioned above could be made into
computer databases. There are many different computer
database systems that could be used to handle these
databases. Some database systems can take advantage of
the coherent structure of the data better than others.
Computer database systems usually have ways to order
and select on the data. There are usually ways to
search the data and visually display it. There is no
set rule an what a database system has to do but they
all have one thing in common. They handle the data in a
time and effort saving way. When viewed with this in
mind, some old familiar programs take on new lives as
database systems.
5. Some Familiar Computer Database Systems: Each of
the PSIOI programs is actually a database system. The
ability to transfer data between the 4 programs
indicates this commonality. By viewing them as such I
hope to illustrate some advantages and disavantages of
various kinds of databases systems. A database system
may only have commands and not an explicit language but
since a language is basically just a string of commands
that can be stored as a program we can use the Toolkit
ALTKEY function to store sequences of commands and give
1"5
even QUILL a quasi-language (also called macros).
gnu
Using 117 rather loose definition of a database, I
can call QUILL, the most used QL program, a database
system and the documents created with it databases.
QUILL could be described as a visually oriented
database system designed to work with textual data in
the form of words, lines, paragraphs, and pages. It
does not recognise numbers except as text. The type of
structure given to this type of data is usually
extremely complex. The rules far putting words into
sentences and sentences into paragraphs defies any easy
explanation. Although work is being done in this area
we are a long way from having computers deal with this
type of data except for its physical structure
(appearance) and spell checking. QUILL is not designed
to take advantage of any simple structure that might be
given to the data. I could create a database with QUILL
that has a simple structure like a phone number list
made of lines with columns for last name, first name,
town, phone number. The structure rules would be in my
head and not known to QUILL because QUILL doesn't
manipulate columns. There would be some advantage to
having the phone list as a QUILL document. I could
locate names with the search command. I could also
locate phone numbers so I could look up a person by his
phone number. These searches would take a long time if
the phone list were large because all teit would have
to be searched sequentially until a match were found
since QUILL would not know that I wanted to search only
information in a certain column. If I wanted to print
the phone list I could basically only print it out in
the same order that I typed it in. I could print out
just a portion of it by making pages and printing just
a page. If I wanted to print out the phone list ordered
by phone number with phone number in the first column I
couldn't do it automatically with QUILL. If I wanted to
group together everyone who lives in a certain town I
couldn't do that either. I could find them but I
couldn't automatically group them together. So QUILL
has some useful database features but it is somewhat
limited in manipulating simple structured data and it
has no explicit language. But it is the database system
of choice for dealing with data constucted of words,
sentences, paragraphs, and pages and being able to
highlight information as in bold and underline. This
column is a good example of a database that works best
with QUILL
EASEL EASEL is a visual database that deals with
pairs of data. One of the data elements must be numeric
the other is usually text. It can handle more than one
set of data (figures) at a time but is limited in its
data handling capabilities. It can create new data from
old by using formulas which is a handy function. Its
primary use is really for graphical display of numeric
data from other sources. It is not a good database for
storing data in its own right since you can't easily
inspect individual bits of data but have to work with
the whole set (figure) at once.
ABACUS ABACUS can be called a database system also.
It is primarily a numerically oriented database system
but is not bad as a textual database system also. It is
arranged so that all data is structured in rows and
columns. It is visually oriented database system and
it's easy to get at any of the data. It is actually a
pretty good database system for handling many common
databases that have simple structure. It handles a
phone list database very well because a phone list can
be given a column format. We could put the last name in
column A, the first name in column B, the town in
column C, and the phone number in column D. The phone
number is really not a number because it has space or
dash as separators. So we wouldn't be using ABACUS'S
numeric powers to keep a phone list database in it.
Still we could do searches. We could order the rows
using any of the columns. So we could order by phone
number. We can move columns so we could put the phone
number in the first column and print out our reverse
phone lookup. We could also group by town. So ABACUS
has powerful database features. If we were to use it on
a database that has numeric data like a check book
database it is very handy because we can easily sum the
check amounts to get totals. ABACUS is sometimes
superior to even ARCHIVE as a database system. When I
was making a brochure of class schedules for a health
spa I found ABACUS to be the easiest program to set it
up on. The data needed to be arranged in cells for the
7 days of the week (columns) and bj time of day (rows).
Periodically the schedule had to be updated and printed
out again. This is very hard to do with QUILL and with
ARCHIVE it would take a lot of special programing. With
ABACUS it was simple even though all the data was
textual. It is often easier to export data from an
ARCHIVE database to ABACUS to do numerical calculations
than to write the necessary ARCHIVE procedures to do
it. What are. the short comings of ABACUS as a database
system? It doesn't have enough commands or an explicit
language to handle a complex series of data
manipulations. There are many things we want to to with
databases that can't be done. Suppose we had an address
database with columns last name, first name, address,
city, state, zip, phone, and key. And in the key column
we had whether the address was for a friend, customer,
or vendor. To locate an address might work by using the
'60 To' command. But that is a very limited search
command and would be very slow in a large address
database because all columns of text would be searched.
Suppose we wanted to send a letter to all our
customers. We could order by the key column to group
our customers together. That might not work perfectly
because we might have a customer who was also a friend.
If we had 'friend, customer' as our key value then the
address would sort with friends and not customers. We
couldn't print out mailing labels from ABACUS because
we have no language to pick out the data elements and
put them in an address label form and print them. Also
since ABACUS keeps everything in memory when our
database reached a certain size it would fill memory
and we would have to break it up into smaller
databases. ABACUS is a pretty good database for simple
structured data but lacks the ability to do many handy
things.
ARGUTE ARCHIVE is actually designed as a database
system so it has many data handling features that
QUILL, ABACUS, and EASEL do not. It is what is known
as a multi-file relational database. This means that it
can access multiple databases simultaneouly and that
l'b
the data is arranged in a table format. The table
format is similar to the column and row format of
ABACUS but a closer analogy is a box of index cards.
The relational database term for card is record.
ARCHIVE data is in a file of records instead of a box
of cards. In a relational database the record is
divided into parts so a particular kind of data is in a
particular location of the record. The area where the
data is expected is labeled so we know what type of
data goes there. This labeled area is called a field.
This is just the same as taking an index card, labeling
it to keep a certain kinds of information in particular
areas of the card. If we reproduced the card and put
them in a box ready for us to begin filing them out we
would be close to having an exact equivalent to
creating an ARCHIVE database ready to hold data.
So mutation. dataJxUii such as ARCHIVE are based on
very traditional concepts used by libraries for
centuries. Take a card (record) and figure out what
type of information you want where an the card
(fields). A library index card would want types of
information (fields) like author, title, subject,
publisher, number of pages, year of publication. Fill
out the cards with information about the books (enter
data) and store them in order by the most important
item (field). If we want to look up by author this
would be the authors name. If we want to look up by
title it would be the book title.
If we were to create an ARCHIVE equivalent to a
library index card we would defeine the record to have
a field structure something like this :
(field names) (field values)
authorS : Jones, Jan
title$ : QL Superbasic The Definitive Hbk
subjects : computer, Sinclair QL, SUPERBASIC
publiserS : McGraw-Hill Book Company
isbnS : 0-07-084784-3
year : 1985
pages : 257
Each record (card) would appear on the screen as it
is shown above. The field names indicate the kind of
information and the field values are the information
for in a particular record in this case a library book.
Besides a field value and a field name, a field also
has a type and a number. It is either a numeric field
or a text field. When an ARCHIVE database is created
the last character given to the field name determines
whether it is a numeric or text field. Just like in
BASIC, if the field name ends in a '$' then it is a
text (string) field and if it doesn't it is a numeric
field. Rotice that in the above card index example
there are 7 fields in all of which 5 are text fields
and 2 are numeric. The field number (rank, order) is
determined at the database creation time just like the
field name and type. The first field defined is field
number '0' and the next is field '1' and so an.
To review, when a database is first set up with
ARCHIVE (created) we must define what cansitutes a
record by specifying the fields of the record. The
fields have the following proper ites :
1. A field name
2. A field type (ends in '$' or not)
3. Total number of fields (numfld())
4. Each field's number ( 0 to numfld()-l)
Each ARCHIVE database has these qualities defined at
creation time and they never change. It is like
creating our box of index cards with the labels on them
ready to be filled out. This is the basic coherent
structure of our database that ARCHIVE understands.
There is no data in the database until we start
inserting records (values for the fields).
If having a endless box of labeled file cards ready
for you to put your information on appeals to you, you
will love ARCHIVE. ARCHIVE is a file card genie. Its
language is specifically designed to manipulate file
cards (records/fields). It can inspect and rearrange
those cards in almost any imaginable way. True you
sacrifice some flexibility by having to structure your
data into fields and records. But I think you will find
that in many cases it actually helps put data in that
form. It makes you really look at your data and think
about what you want to do with it rather than putting
it in a file a disorganized way as you might do with a
word processor. As the saying goes, garbage in -
garbage out. Structure makes data more useable.
Our sacrifice in flexibility is made primarily so
ARCHIVE can give use 3 wonderful commands :
1) ORDER : ARCHIVE will order our records (cards) by
any field, 2 fields, or 3 fields in ascending or
descending order. Within a few seconds we could change
a library card database from being ordered by author to
being ordered by title. He wouldn't have to have 2
separate file card databases like a library does. We
can change our database to suit our needs instantly.
2) LOCATE : This command works off our current
order. It allows us to find any record within 1 second
no matter how large our database (100 or 1000 or 10000
records). If we had our library card database ordered
by author we could just type : locate " Jones, Ja" to
find Jan Jones's book instantly.
3) SELECT : This command allow us to work with
subgroups of our database. We can temporarily eliminate
records we don't want for quicker access to those we
do. For our library card database we could type :
select instr( subjects, "computer") and year<1986
to get all records which deal with computers and
were written before 1986. Select has a very flexible
format making it very powerful .
The ARCHIVE language has many other useful commands
and functions but these 3 (order, locate, select) are
the key to its usefulness. They are the reason why
relational database were developed.
lext Issue we will look a little bit into the inner
working of ARCHIVE. It will help us understand some of
its strong points and weak points. Re will also look at
these 3 commands in detail and begin some examples.
Bill Cable
Wood and Wind Computing,
RR-3 Box 92,
Cornish, IH 03745
TS-2068 Program "Dbx.B6"
A software for RECORD Keeping
Key in Project and Tutorial- By Bill Jones
""Dbx.36"" is a lew "Record Data Base"
Software that takes advantage of the MERGE
function to conserve FREE MEMORY and thus provide
the largest data base ever before created with the
TS-2068. In addition, there is a word processor
included, "Search and Find", and the most
versatile of Sorting choices ever before off erred.
There are four programs to key in. Dbx.B6 is the
main program. 3s it operates two other programs
are automatically MERGED when needed by the
function in progress, "sort. 36" MERGES when SORT
is selected at menu. "Init.B6" is MERGED when the
Dbx.B6 program is first RON. "mlS.36" is the MENU
that is saved to Disk to be loaded each time the
program needs the menu. A fifth program "var.B6"
is given to be used only once to initialize a set
of variables used in the main program.
Actually, Dbx.B6 evolved from an earlier
program called "Mail Merge". Mast af the Mail
Merge functions were upgraded and expanded and
more 1 attitude of sorting was added. The addition
of more sorting choices makes Dbx.B6 a software
that is adaptable for just any type of records
that one may need to create and manage. Some
typical types of records are: Telephone lists,
Mailing Lists, Inventory lists, Disk Library,
Audio Tape Library. It can even be used for such
diverse purposes as Invoices, or Daily Diary. If
you can think of any type of records needing from
one to 50 lines or more, this program will create
and manage the records. The data capacity is
enoromous by TS-2068 standards. A Telephone list
having single line records of 28 chrs can be built
to over 1000 names.
Other examples: A Seven Line Record far use
as a combination Mail File with 2 lines for notes
can be built up to over 130 records. A smaller
Mail File having 4 lines of 31 characters each can
reach over 240 records in length. A 5 line
invoice of 60 chrs per line can be as large as 100
customers. A 3 line by 20 car HVEITORI FILE can
hold up to 500 records. The SIZE of the RECORDS
determines the maximum number of records, and the
user sets up the Record dimensions. SORTING
CHOICES are by any line, and by "First or Last"
group within the line. When the records are
Sorted each record remains intact and the records
are lined up by the sorted line. Example: a mail
file can be sorted by either LAST SAME ar by Zip
Code. A Stock List can be sorted by HOOK or by
Stock Number. IF there are 10 record lines there
are 20 sorting choices.
Print Out of the records is controlled by
menu choice. Whole records may be printed or
partial records. For example, the Mail List that
is used for Update Magazine has 7 lines per
record. The first four are lame and Address, the
fifth is the person's first name as "Dear John,"
and lines 6-7 are information lines. To print
LABELS, we elect to print-out the first four
lines. Then prompts ask for "TAB and Spaces
Between". Such control allows any size label to
be printed. For just paper print of listings
prompts guide the set-up of printing so that pages
of listings are printed without over-running the
page separations.
The Menu offers a "SEARCH" option. The
"Search Ward" is input, and prompts ask far the
"Line to Search". Input "Danka" and the first
record to have Danka is presented an screen. We
can continue for more Dankas, or elect to Quit to
Menu. Dbx.36 has a management protocol that lets
the user use any numner of disk drives from one to
four. Prompts allow different drives to be used
for data files and the program itself. Data files
are SAVED and LOADED by discrete "numbered files"
for best orientation of record files management.
Dbx.36 is programmed 100% in BASIC. If
mistakes are made during operation the program
interrupts with a REPORT CODE at the bottom of
screen. There are two "GO TO" solutions to
operator error. The one to use. dutfing «~
Se>*X operation is <GO TO 1974>. Line 1974
DELETES the sorting program (if on board) and
re-constructs the main "Dbx.B6" program, then
presents the main Menu. If a report code comes
during operation in any mode EXCEPT SORTIIG, <GO
TO 2000> resumes operation. These two corrective
<G0 TOs> should be posted somewhere until you have
operated the program enough to remember them.
Just remember that REPORT CODES come only after a
MISTAKE in operation, mostly from entering the
wrong DISK lumber. A line number where the
mistake occurred will be given in the report code.
Most often, after a report code, you can LIST
the line number and see that a <GO TO> the
previous line number will resume operation at that
point. A study of the main Menu given at the end
of this article will be helpful at this point.
*** See Menu *** We have dwelled upon Report
Codes too much really. The program is FRIENDLY
and easy to operate. After Key- in af the five
f8
programs Do h/oT RUI the program to get it
started, /flSf<?«d<G0 TO 18Q4>. The Dbx.B6 program
SHOULD HOT be Saved to Auto Rim unless you want to
create a separate Auto Run Loader. This is
because during operation the main program is
actually Destroyed when SORT is ordered by menu
selection. Then when SORTIIG has completed the
sort program is DELETED, and the Dbx.B6 program is
MERGED BACK. If the Dbx.B6 program were saved to
Auto Run this process would be thwarted.
A typical ADTO LOADER that you might use to
Load and Run this program is: <1Q RANDOMIZE aSR
3L00:LOAD "Dbx.B6": GO TO 1804>. Then SAVE this
one line auto loader by the direct command:
<RAHDOM3ZE USR 102: GO TO 10>. When the music
plays touch s. This is for LKDOS Systems. All of
the SAVE and LOAD functions are given in LKDOS
syntax. Por other systems the SAVE, MERGE, and
LOAD lines should be edited and changed in syntax
to that needed by the DOS in use. Seme DOS does
not support MERGE. For those systems ALL of the
lines having DELETE and MERGE should be edited to
remove the DELETE and MERGE. But KEEP the GO TOs.
This way will result in a larger program that
remains in TS-2068 memory and has a reduction in
TOiriinim RECORD capacity of about 15%.
The Key-in Tutorial
We'll use the key in pro ject as a tutorial .
DID TOO KHOW that Sinclair Computer have "BUILT 15
SORTIIG" capability? Well, dont be ashamed as
most users dont know that. The Sinclair ROM has a
sophisticated SORTIIG function built in. All we
need to do is manage it with Basic Programming.
Lets learn to do this in a simple fashion. Type
these direct commands from the keyboard. 1. <LET
A$="ABC Benjamin Franklin and Joe Smuts" EKTER>.
2. <LET B$="Ben Franklin" EJfTER>. low we have two
lines of data entered that can be SORTED. It
would appear that "A$ is LARGER then B$", now
wouldn't it? But instead, "B$ is LARGER". At
least it is "to the Sinclair ROM", because A$
begins with lower number characters than does B$.
Lets prove it. 3. Type: <IF A$<B$ THEM PRIIT A$
ERTER>.
The data in A$ will print to screen because
the ROM has SORTED the two data lines. So despite
the fact that the A$ data is much "longer" than
the B$ data, "A$ is Smaller". If this is news to
you then you should monkey around entering
different data in A$ and B$ and see how the ROM
evaluates the two data lines. Actually you can
see HOW the Rom COMPARES data by looking at the
user manual pages 239-245. Each Character is
assigned a numbered CODE, for the ROM to evaluate.
"PRUTABLE characters range between CODE 32
(space) to CODE 122 (i). The ROM sorting priority
(order) is the order of the character CODE
lumbers. Since we wont be sorting "nan printable"
characters, we will trap out all codes BELOW 32
and ABOVE 122, and just ask the ROM to sort
PRUTABLE CHARACTERS by comparing one data line
with another.
Dbx.B6 will assume that no record line should
begin with an empty space and discard the line if
it does. We will set up a SORTIIG system that
lets us choose to sort by GROUPS WITHII A LIIE-
first group in the line, or LAST group within the
line. Then we will choose which line to sort the
records with. Lets look at a couple of examples:
A Telephone List would be a set of records having
only one line, such as, "Mr. George W. Washington
Jr. 942 466 9223". We could sort by "First
Group", but that wouldn't do anything intelligent
to sort by "Mr.". Or, we could sort by "LAST
GROUP" and sort by tel numbers, another exercise
in folly!.
Lets fix the line so that it can be sorted.
Change it to: "Washington ,Jr Mr. George W." See
what we have done? We put LAST IAME FIRST in the
lines to be sorted and the telephone list can be
sorted by entering "Sort By First Group". Then if
we enter all of the names "last name first" we can
let the ROM compare all "First Groups" of the
lines and sort them. Also, in managing the
records you'll want to keep the lines as short as
practical. So some abbreviations of long names
may be in order, as "Washington ,Jr Geo W.
6494448222". That will trim the line to 31
characters. By shortening the lines and keeping
within the bounds you can make much longer record
files.
Another Example: A Mail file of records is
constructed using 5 lines. Four lines are used
for name and address, the fourth line containing
"STATE and Zip Code". The fifth line will be the
person's FIRST IAME to use for picking off in a
letter (Dear John,). Tou will want the first line
of Mail files to sort, and if you are doing Bulk
Mail, you'll also want to sort byZip Code. A
typical First Line: "Mr. George W. Bush,Jr.".
lote that the only practical sort for the first
line would be "LAST GROUP" or <3ush,Jr>. Also
note that the space has been removed between "Bush
Jr.". We wouldn't want to sort "Jr.", eh?.
Sorting by LAST GROUP could also be accomplished
with LIKE 4 to sort by ZIP CODE. Canadians use a
f9
hyphen between the twin postal codes. To sort by
Zip Cade yon would enter <Line 4> <LAST GR0UP>.
to EXAMPLE of an IIYEITORI Record FILE: Line
1 could be "noun and Stock lumber". Line 2 could
be "Dollar value and 01 HMD number". Sort by
first group of line 1 for a line up by noun. Sort
by Last Group of line 1 for a stock number sort.
Sort by first group of line 2 to get Inventory
Value, or last group of line 2 to get On Hand
Levels (for re-order information). As you can
see, there is a certain amount of discipline
required to be cansistant with the format for
entering LIIE data in a record data base.
The speed of Sorting is (in my opinion) not a
critical criteria for a useful data base program
such as Dbx.BS. One spends days working on a
large Record Data Base. Sorting is needed only
once, when the record file input has been finished
for the day. Sorting with BASIC is indeed slow.
But by comparison with the data input chare,
sorting is fast. As a bench mark, I sorted a
record file having 100 records of 7 lines and 31
characters per line. It was a Zip Code Sort,
which requires more time than a "first group"
sort. The sort was accomplished in 57 minutes.
The length of time required to sort depends upon
the variable factors of Total number of Records,
and the number of fields (lines) in the records,
and whether sorting by "First or Last" group
within the sort line.
Later, in another issue of Update Magasine I
will give you a fast Machine Code program to key
in that will do the sort function in about 10
seconds. But for now lets do it in BASIC and
learn something about sorting techniques. The act
of keyin in the program should be educational , and
when finished you'll have the best RECORD DATA
BASE program ever done for the TS-2068.
Also a Daisy,B6 Annex Program
The Dbx.BS program and its Sort annex is
operated as satelite programs from the Daisy .B6
software. Dbx.B6 is MERGED to Daisy by Menu
elective to create and manage record data bases to
be integrated within Text print-out products.
Also, Daisy uses the Dbx.B6 data base files
(without Dbx.36 being an-board) for Mail Merge
purposes to print personalised form letters to the
mailing list. Other types of Dbx.36 data base
record files can be print processed within Text
files (or alone) by the Daisy software. The
maximum sise data base that can be created by
Dbx.36 (when it is MERGED into the Daisy
environment) is reduced by the sise of other Daisy
data bases that may be present. ** Other Basic
Programs may be MERGED to the Dbx.B6 program and
operated, as long as the line numbers of the
Merged program do not overlay the Dbx.B6 program
lines.
Typically, a letter data base can be present
in the daisy program and still allow about 100
mail files to be created, or loaded from disk.
When creating records with the Dbx.B6 program to
be later used with the Daisy software, one should
bear in mind that the files must be kept within
n«?iiwTiw bounds of total Memory used. A good rule
of thumb would be to keep the Record Dimensions
within a boundary of about 1QK of memory usage,
which would accommodate a mail file of about 6Q
records of 5 lines and 31 characters. Then such a
record data base could "co-reside" in the Daisy
program with other files to be "mix printed".
The Key in Project
Start the key-in project by FORMATTING a new
Disk to have ready for the SAVES. Key in each of
the five programs and save each one separately
with the file name given. Take your time in doing
the key in. Dent just have the goal of finishing,
but study the program lines as they are keyed in.
Such study is more valuable than a manual to learn
what will be taking place as the program operates.
And, you might learn some of my unorthodox methods
of programming while you are at it. It will
likely take several days of work to get it all
keyed in, so SAVE your work often. low we will
discuss each of the five programs individually.
The "Dbx.B6" Program
The Dbx.BS program contains the Menu call and
all of the functions EXCEPT SORTHG. It is also a
COHTROL program that DELETES itself before MERGIHG
the Sort Program. It also MERGES the Init.B6
program as needed to set the LKDOS system and Set
the Printer to one of three print styles. Dbx.BS
is organised to keep FREE MEMORY at maximum by
using DELETE and MERGE.
Tie "Init.B6" Program
The "Init.36" program MERGES in when needed
to provide the initialisation of the LXDGS system
for the type of interface in use. It also
3 cf7fy±
20
contains a menu for PRIITER STYLE set-up. The
Printer Style changes are programed for an Epson
Compataile Printer, the Panasonic KZP 1124. The
program line f 1996 will likely need editing and
change of the OUT commands for a different type of
printer than the XXP 1124. A temporary measure
can be taken to by-pass the PRIITER SET function
and just use MAHUAL Settings at the printer
itself. To do so place a Rffl after line numbers
1996 and 1997. Then you can set your printer to
the Print Style needed and the software wont
command the printer at all.
Two of the programs are not used at all by
the Dbs.BS operating program, but are necessary to
key in and use "BEFORE" running the Dbx program.
These are:
The "var.B6" Program
Key in the var.B6 program and save it with
the name "var.B6". Then LOAD the "Dbx.36" program
from disk and do the following: Type <GO TO 1976
EHTER>. This results in the var.B6 program
MERGING, the vars being initialised, and then the
Tar. 36 program is DELETED, never to be needed
again. But later, if you want to add more
functions to the Dbx.B6 program and use more
variables you can add new vars to the var.B6
program and type <GO TO 1976> to add the vars to
an operating program.
The Ttan.Hr Program
Type in the "Menu.Bl" program. This
program's only purpose is to CREATE the Menu in a
Disk Screen Pile, to be loaded to the Dbx.B6
program when the menu is needed. This menu would
normally take up about 900 bytes of FREE MEMORY,
reducing the total data capacity by several
records. When the Menu is saved to disk it is
called up as needed using only 10 bytes of
programming. After keying in the Menu.Bl program
type RUK. The menu will appear on screen.
Compare it with the printed Menu SAMPLE for
correctness. If the menu is the same as the
Sample, then type <COTTIIUE EITER> and it will be
SAVED to disk. The fallowing help is given for
keying in the graphics characters.
In line 9998 the first group is gotten (after
the Quote) by using CAPS SHIFT 9 to shift into
GRAPHICS, then SHIFT 3 three times, fallowed by
SHIFT 2, then SHIFT 9 to get out of Graphics.
Then later in the same line, the second group of
graphics characters are entered by, using CAPS
SHIFT 9 for graphics, then SHIFT 3 three times,
followed by SHIFT 2, then SHIFT 9 to get out of
graphics. The third graphics group is gotten by
SHIFT 9 to start graphics, then SHIFT 1, followed
by SHIFT 3 nine times. Then SHIFT 9 to get out of
graphics.
(Mange to Math Progranmers
This suggestion is for our MATH Expert
programmers (How about it Warren!"). Such a data
base program as Dbx.B6 can be ammended to have
quite a powerful "VIEW CALC" annex far beyond the
capabilities of the old PSIOI View Calc Program.
The DEF FI function could be used for base
formulas. The annex program could be MERGED as
needed to use the DEF FK formulae to calculate
from figures given in one of the lines of the data
base. The MERGE annex could be arranged to do the
following: 1. Elect the record line to exercise a
formula. 2. Elect the record line to RECEIVE the
results of the Calc. 3. Exercise the formula and
deposit the results in the receiving line.
Example: a DEF FH formula has been added to
the main program to "calculate the value af "B"
when "A" is given". Line |4 of the data base
contains the value of "A". The program picks off
the value of "A" from line 4, performs the calc
and then deposits the value of "B" in line 5.
Perhaps this will give someone ideas. Is for me,
I 'm not sharp enough on mathematics to create such
an annex.
The Dbx.B6 is offerred as an ISSUE DISK in
LKDOS 40 or 80 Track Format (5 1/4" Disk) ready to
operate. But I encourage all who want to learn
something about Basic Programming to key the
programs in for the educational value. Then in a
latter issue we will add the faster MC sorting
functions . _BJ-
fte ISSUE DISK
To Receive the Dbx.B6 ISSUE DISK, send $22.00
to: Update Magazine, 513 E. Main St., Peru, II
46970. Available for LKDOS in either 3 1/2" or 5
1/4 inch diskette, formatted either 40 or 80
tracks. Specify Drive Size and Format.
"Dbx.B6" The Main Data Base Program
1800 REM ** "DBX.B6" **
A RECORD DMA BASE PROGRAM
1801 REM ** A SHARE WARE PROGRAM
1802 REM ** An Opdate Magaxine Issue Disk **
1803 REM ** Bj Bill Jones, 1317 Stratford Ave,
Panama City, FL 32404
1804 BORDER oo: PAPER oo: IRK og: CLS : GO TO VAL "
1992"
1976 RANDOMIZE USR VAL "100": MERGE "var.B6"
1978 DELETE VAL "1977", VAL "1977": GO TO VAL "1992"
1982 CLS : LET a=LEN o$(l,l): INPUT "Input SEARCH G
roup";m$: LET b=LEH m$-l: LET c=a-b: INPUT "Record
Line to Search?" ;so: LET n=l
1983 PRINT "Searching "; INVERSE oa;m$; IRVERSE oo:
PGR n=n TO m5: OK ERR GO TO VAL "1986": FOR j=l T
O c: IF o${n,so){y TO y+b)=m$ THEM OR ERR GO TO V
AL "1990": STOP
1984 MEXT y
1985 NEXT n
1986 OR ERR RESET : CLS : PRINT FLASH oa;AT oj,o£
;m$;" Rot Present";foo;"<l> Another Search <2> Quit
": PAUSE oo : LET m=CODE INKEl$-48: IF m<>oa THEN G
0 TO VAL "2001"
1988 GO TO VAL "1982"
1990 ON ERR RESET : PRINT AT of ,oo; "Record I ";n:
FOR y=oa TO 12: PRINT o$(n,y): NEXT y: LET n=n+oa:
PRINT foo;"l. Cont 2. Search He* Gp 3. Quit": PAUSE
oo: LET m=CODE INKEI$-VAL "48": CLS : GO TO (m<oa
OR m>oc)*VAL "1990"*(«=oa)*VAL "1983"+(m=ob)*VAL "1
982H+(n=oc)*VAL "2001"
1992 RANDOMIZE USR ml: MERGE "Init.B6"
1999 DELETE VAL "1993", VAL "1998": GO TO VAL "2001"
2001 RANDOMIZE USR ml: LOAD "ml6.Cl"SCREEN$ : PRINT
AT op, oy; ("Pica" AND ps<ob)+{"Elite" AND ps=ob)+("
Micron" AND ps=oc)+("Cond" AND ps>oc);AT ot,oi;pg;"
";AT ot,oq;nn;" ";AT ob,ou; FLASH oa;("No " AND LE
N o$(oa,oa)<ob)+("Yes" AND LEN o$(oa,oa)>oa); FLASH
oo
2002 PRINT AT oc,ox; FREE ;" ";AT oj,oi; ("Limit" AN
D LEN o$(oa,oa)<ob)+("Sixe " AND LEN o$(oa,oa)>oa);
AT ok,ox;(ll AND LEN o$(oa,oa)>oa)+(INT (( FREE -k2
)/124) AND LEN o$(oa,oa)<ob);AT ol, ox; "Records"; AT
oa,ox;"(";: PRINT ("4,31" AND LEN o$(oa,oa)<ob);: I
F LEN o$(oa,oa)>oa THEN PRINT 12;",";13;
2003 PRINT ")": PAUSE oo: LET x=CODE INKEI$-VAL "48
": GO TO (x<oo OR x>oi)*VAL "2003"+(x=oa)*VAL "2004
"+(x>oa AND z<oe)*VAL "2007"+(x=oe)*VAL "2040"+(x=o
f)*VAL "2056"+(x=og)*VAL "1982"+(x=oh)*VAL "2053"+(
x=oi)*VAL "2049"+(x=oo)*VAL "2057"
2004 CLS : PRINT AT oj.of ; FLASH oa; "Confirm START
HER"; FLASH oo^'TAB of;"<y> les or <n> NO": PAUSE
oo: LET g=CODE INKEY$: CLS : IF g=VAL "89" OR g=VAL
"121" THEN INPUT "Input Nbr of Files to set up?";
11: LET mx=ll: INPUT "Input Nbr of Lines";12: IF mx
*12*VAL "31"+k2> FREE THEN PRINT foo;"TOO BIG": B
EEP ob,oh: GO TO k2+od S *t7 P*S
2005 CLS : IF gOVAL "89" AND gOVAL "121" THEN GO
TO VAL "2001"
2006 DIM o$(ll,12,VAL "31"): LET in=oa: LET ms=oa:
CLS : GO TO k2+oi
2007 IF x>oa AND x<of THEN LET in=oa: INPUT "Enter
Start Number" ;ms: INPUT "Enter END Number" ;mx: CLS
2009 FOR o=ms TO mx: IF o>mx THEN GO TO k2+ot
2010 IF x<oc THEN GO SUB VAL "2022"
2011 IF x=od THEN GO SUB VAL "2030"
2012 IF x=oc THEN GO SUB VAL "2034"
2018 NEXT o: GO TO k2+ot
2019 LET o=mx+oa: GO TO VAL "2001"
2022 CLS : PRINT AT oo, a j; "Record |";o: FOR n=l TO
12: PRINT AT ou,oo; "INPUT LINE "; FLASH oa;n; FLASH
oo;" Or 4 to QUIT": INPUT m$: IF m$="4" THEN LET
o=mx+oa: RETURN
2024 PRINT AT ou,oo;" ";AT
n*oh,oe;"Line Kjn'mSifoojAT QO,Qo;"Touch <"> To Co
rrect Else ENTER ": PAUSE oo: LET m=CODE INKEI$: IF
m=96 THEN PRINT AT n*ob+oa,oo;"
": LET n=n-oa: GO TO VAL "2026"
2025 LET o$(o,n)=m$
2026 NEXT n
2027 CLS : PRINT AT oe, a j; "Record f ";a': FOR n=oa
TO 12: PRINT o$(o,n): NEXT n: PRINT foo;AT oo,oo;"E
NTER if OK Other Key to Correct": PAUSE oo: LET m=C
ODE INKET$: IF m=om THEN RETURN
2028 LET n=n-oa: GO TO VAL "2022"
2030 CLS : PRIRT TAB oj;"RECORD f";o": FOR n=l TO
12: PRINT AT n*2,oe;"Line f ";n'o$(o,n)' : NEXT n: P
RINT ""O.K.? <y> Tes or <n> No": PAUSE oo: LET g=C
ODE INKEY$: IF gOVAL "121" AND rOVAL "89" THEN I
NPUT "Enter Line f to Correct" ;n: PRINT AT o?roo;"E
nter new Line ";n: INPUT o$(o,n): GO TO VAL "2030"
2032 RETURN
2034 PRINT TAB oj;"Record f ";o»: FOR n=oa TO 12: P
RINT o$(o,n)
2035 NEXT n
2036 IF o=mx THEN PRINT "ENTER WHEN READY": BEEP o
a/od,oy: PAUSE oo
2037 RETURN
2040 CLS : PRINT foo;"Set Printer, ENTER": PAUSE oo
: INPUT "Enter TAB";tb: BEEP oa/of, ox: INPUT "ENTER
Start Rec |";ms: BEEP oa/of , ox: INPUT "ENTER END R
ec f";mx: BEEP oa/of , ox: INPUT "ENTER I of Lines (4
for Labels";ly: BEEP oa/of, ox: INPUT "ENTER fSpace
s Between Rec";ss: BEEP oa/of , ox: INPUT "Page Contr
ol? <1> Yes <2> No";pc
2041 IF pc=oa THEN LET ln=VAL "56": LET nn=oa
2042 FOR n=ms TO mx: FOR y=oa TO ly: LPRINT TAB tb;
o$(n,y): LET nn=nn+oa: NEXT y: IF pc>oo AND ss+nn>l
n THEN OUT VAL "127", ol: LET nn=oa
2044 IF ss>oo THEN FOR g=oa TO ss: LPRINT : LET nn
=nn+oa: NEXT g
2046 NEXT n
2048 GO TO VAL "2001"
2049 as : INPUT "Enter <1> SAVE <2> LOAD";m: BEEP
oa/of ,xo: INPUT "ENTER DATA Disk f";dd: RANDOMIZE U
SR ml: GO TO dd: RANDOMIZE USR ml: CAT \A$",: BEEP
oa/of ,oq: INPUT "ENTER File name + Ext";m$: IF m=o
a THEN RANDOMIZE USR ml: SAVE m$ DATA o$(): GO TO
k2
2050 RANDOMIZE USR ml: LOAD m$ DATA o$(): LET 13=LE
N o$(oa,oa): FOR n=l TO k2: ON ERR GO TO VAL "2051
": LET 15=(n AND o$(n,oa)(oa)<>" ")+(I5 AND o$(n,oa
22
){oa)=" "): IEXT n
2051 OH ERR RESET : LET ll=n-oa: FOR n=oa TO VAL H
500": OH ERR GO TO VAL "2052": LET x=LEH o$(oa,n):
NEXT n
2052 OH ERR RESET : LET I2=n-oa: BEEP oa/oj,zo: IH
POT "Enter Program Disk t";pd: RAHDOMIZE OSR ml: GO
TO pd: GO TO VAL "2001"
2053 CLS : IHPUT "Enter Record line! to Flip"; so: I
F so>ll OR 15<2 THEH GO TO k2
2054 C3.S : FOR n=oa TO 11: PRIHT TAB od; IHVERSE oa
;"Record Ho. ";n;" Linel ";so; IHVERSE oa'a$(n,so):
HEXT n
2055 PRIHT " FLASH oa; "Enter Hhen Ready": PAUSE oo
: GO TO VAL "2001"
2056 DELETE VAL "1804" ,VAL "2055": CLS : PRIHT loo;
"HERGIHG . .": RANDOMIZE OSR ml: MERGE "sort.B6": G
O TO VAL "1810"
"sort.B6" The Sorting Program
1810 CLS : PRIHT "Finding DB Dimensions": FOR n=l T
O kl: OH ERR GO TO VAL "1812": LET 13=LEH o${n,l)
1811 HEXT n
1812 OH ERR RESET : LET ll=n-l: FOR n=l TO ml: OH
ERR GO TO 1814: LET 13=LEH o$(l,n)
1813 HEXT n
1814 OH ERR RESET : LET I2=n-1: FOR n=ll TO oa STE
P -oa: IF o$(n,oa)(oa)<>" " THEH LET 15=n: GO TO V
AL "1818"
1815 HEXT n
1818 PRIHT "The DB is: 0${";11;",";12;",";13;")"
1820 BEEP oa/of ,zo: IHPOT "Enter Record Line f to S
ort";so: BEEP oa/of, zo: PRIHT foo;"Sort: <1> First
Gp or <2> Last or EHTER to Quit": PAUSE oo: LET si
=CODE IHKEI$-VAL "48": IF sl=om THEH GO TO k2
1821 IF so>12 OR so<oa OR sKoa OR sl>ob THEH GO T
O VAL "1820"
1824 GO SUB VAL "1900"
1826 IF sl=ob THEH GO SUB VAL "192Q"
1832 GO SUB VAL "1954"
1834 IF sl=ob THEH GO SUB VAL "1938"
1836 GO TO VAL "1974"
1900 CLS : PRIHT AT oj,oo; "Eliminating Repeats"'TAB
of ;"% Done": FOR n=l TO 15: FOR y=n+oa TO 15: PRIH
T AT okrod;IHT ((n/15)*100): IF o${n,oa)=o${y,oa) A
HD o$(n,oa)(oa)<>" " THEH FOR g=oa TO 12: LET o$(y
rg)="": HEXT g
1902 HEXT y: HEXT n
1904 CLS : PRIHT AT a j,od; "Eliminating Skips": LET
n=oa
1905 FOR n=n TO 15: PRIHT AT 11,10;IHT ((n/15)*100)
;" % Done": IF o$<n,oa)(oa)=" " THEH GO TO 1910
1906 HEXT n
1907 FOR n=l TO 11: IF o$(n,oa)(oa)=" " THEH LET 1
5=n-l: RETURH
1908 HEXT n
1909 RETURH
1910 BEEP oa/oz,xa: FOR y=n+l TO 15: IF o${y,l)(l)<
>" " THEH FOR g=l TO 12: LET o$(n,g)=o${yFg): LET
o$(y,g)="": HEXT g: LET n=n+l: GO TO 1905
1911 HEXT y
1912 GO TO 1906
1914 OH ERR GO TO VAL "1918": FOR n=hfoa TO m: IF
o$(n,ab)(oa)=" " THEH LET o$(n,oa)=""
1916 HEXT n
1918 OH ERR RESET : RETURH
1920 as : PRIHT AT oj,oa;"Line Group Reverse": FOR
n=oa TO 15: PRIHT AT ol,ol;IHT ({n/15)*100);"% Don
e"
1922 FOR r=13 TO 1 STEP -1: IF o${n,so)(y)<>" " THE
H GO TO 1926
1923 HEXT y
1924 HEXT n: RETURH
1926 FOR g=y TO 1 STEP -1: IF o${nrso)(g)=" " THEH
LET o${n,so)=o${n,so)(g+l TO y)+" "+o$(n,so)( TO g
): GO TO 1924
1928 HEXT g: GO TO 1924
1938 CLS : PRIHT AT oj,oa; "Replace First Group, Lin
e ":so: LET bS="": FOR n=oa TO 15: PRIHT AT 12,12;I
HT ((n/15)*VAL "100");"% Done": IF n>15 THEH RETUR
H
1940 FOR y=l TO 13: IF o$(n,so)(y)=" " THEH GO TO
1946
1942 HEXT y
1944 HEXT n
1945 RETURH
1946 FOR g=13 TO y STEP -1: IF o$(n,so)(g)<>" " THE
H LET o$(n,so)=o${n,so)(y+l TO g)+" "Ho$(n,so)( T
O y): GO TO 1944
1948 HEXT g
1950 GO TO VAL "1944"
1954 as : PRIHT AT oj,og;"SORTIHG, Line ";so: DIM
p$(I2,VAL "31"): LET n=oa
1956 FOR n=n TO 15: PRIHT AT 12,12;IHT ({n/15)*VAL
"100");"% Done": IF n=15 THEH RETURH
1958 FOR y=n+l TO 15
1960 IF o$(n,so)>o$(y,so) THEH FOR g=l TO 12: LET
p$(g)=o${n,g): LET o$(n,g)=o$(y,g): LET o$(ytg)=p$(
g): HEXT g: GO TO 1956
1962 HEXT y
1964 HEXT n: RETURH
1974 OH ERR GO TO VAL "1975": DELETE VAL "1810" ,VA
L "1964": STOP
1975 OH ERR RESET : RAHDOMIZE USR ml: MERGE "Dbz.B
6": GO TO VAL "2001"
"¥ar.B6" The Variable File Program
1977 CLEAR : DIM o$(l,l,l): DIM p$(l,l): LET so=l:
LET sl=2: LET 11=0: LET 12=0: LET 13=0: LET 15=0: F
OR n=l TO 1: HEXT n: FOR y=l TO 1: HEXT y: LET ml=l
00: LET m$="": LET ly=0: LET ss=0: LET ms=0: LET mz
=0: LET pc=0: LET m=0: LET oo=0: LET oa=l: LET ob=2
: LET oc=3: LET od=4: LET oe=5: LET of =6: LET og=7:
LET oh=8: LET oi=9: LET oj=10: LET ok=ll: LET ol=l
2: LET om=13: LET on=14: LET op=15: LET oq=16: LET
or=17: LET os=18: LET ot=19: LET ou=20: LET o?=21:
LET ow=22: LET oz=23: LET oy=24: LET oz=25: LET zo=
27: LET ps=l: LET pr=l: LET nn=Q: LET ln=57: LET pg
=1: LET kl=1000: LET k2=2000
2,3*
"Init.B6" The LKDOS Initialization
And Print Style Menu Program
1993 BORDER HOT PI: PAPER HOT PI: IHK VAL "7": CLS
: LET pg=N0T HOT PI: LET nn=HOT PI: PRIHT AT ogrod;
"Touch: ""TAB od;"<l> For TS-2040 Printer"' 'TAB od;
M<2> For Dot Matrix" ' 'TAB od;"<3> For Daisy Hheel";
AT os,og; IHVERSE oa;"PRIHTER MUST BE OH"; IHVERSE
oo : PAUSE oo : LET z=CODE IHREY$-VAL "48": LET pr=z-
oa: IF z<oa OR x>ob THEH GO TO VAL "1993"
1994 IF pr=oo THEH RAHDOMIZE USR ml: OPEH fog,"LP"
: RAHDOMIZE USR ml: POKE VAL "16092", oo: GO TO VAL
"1999"
1995 CLS : PRINT AT oj,oe;"ELECT Type CPI:""TAB ae
;"[1] Aerco - Oliger""TAB oc;"[2] Tasman CPI""TAB
oc;"[3] A & J CPI": PAUSE oo: LET a^CODE IHKET$-VA
L "49": PRIHT fO;"Printer Heed Line Feed? <y> <n>":
PAUSE HOT PI: LET m$=IHKEY$: LET b=(oj AHD m$="y"
OR m$="Y")+(HOT PI AHD m$<>"y" AHD m$o"Y"): RAHDOM
IZE USR ml: OPEH foc,"lp": RAHDOMIZE USR ml: OPEH I
od,"dd": RAHDOMIZE USR ml: POKE VAL "16096", a: RAHD
OMIZE USR ml: POKE VAL "16Q90",VAL "138": RAHDOMIZE
USR ml: POKE VAL "16092", b: RAHDOMIZE USR ml: POKE
VAL "16094", HOT PI: OUT 127,24: LPRIHT
1996 CLS : PRIHT AT oj,oc;"SET PRIHTER and Elect:"*
'TAB oc;"[l] Pica 10 Cpi""TAB oc;"[2] Elite 12 Cpi
""TAB oc;"[3] Micron 15 Cpi": PAUSE oo: LET ps=COD
E IHKEY$-VAL "48": LET m=VAL "1997": GO SUB m: OUT
VAL "127", VAL "27": GO SUB m: OUT VAL "127", (VAL "8
0" AND ps=oa)+(VAL "77" AHD ps=ob)+(VAL "103" AND p
s=oc): GO SUB m: OUT VAL "127", VAL "120": GO SUB m:
OUT VAL "127", oa: GO TO VAL "1999"
1997 IF IN VAL "127"<>VAL "237" THEH GO TO VAL "19
97"
1998 RETURN
Ke? the two program lines in and then <RUN>.
The Menu will present itself on screen and a STOP
will occur. Examine the screen for balance and
compare it with the printed screen below. If
there is a report code or if the menu isn't shaped
like the sample, then correct jour work and <RUN>
again. When satisfied, type CONTINUE ENTER > and
the menu will be SAVED to disk. After the SAVE
you can delete the program, as we dont need it
anymore. Or, if you wish you may SAVE it as a
Basic help utitlity for constructing other menus.
The Menu Sanple
ML DATA
<1> Start New DB
<2> Add To List
<3> View The File
<4> Correct Files Mfiie
<5> Prt Lab/Env
<6> Sort the File
<7> Search a Name
<8> Flip Through
<9> SAVE/ LOAD
<0> Function Menu
Page Line
2QQQ
"Menu.Bl" The Program to Construct the Menu
9998 BORDER 0: PAPER 0: INK 7: CLS : PRINT AT 2,2
3; "ML DATA";AT 3,3;"--r; INVERSE 1;"DBSE MENU";
INVERSE 0;nfaBFREE=n,TAB 20 ; "laMa" ; AT 5,3
; INVERSE i;"<l> Start New DB"; INVERSE O'TAB 3;"
<2> Add Recordsn,TAB 3; INVERSE 1;"<3> View Recor
ds";AT 9,3;"<4> Correct File"; INVERSE 0;TAB 23;"
Mf i 1 e" ' TAB 3;"<5> LPRINT File" 'TAB 3; INVERSE i;"
<6> Sort Records";AT 13,3;"<7> Search File INV
ERSE O'TAB 3;"<8> Flip Through"' TAB 3; INVERSE 1;
"<9> SAVE / LOAD "; INVERSE O'TAB 3;"<0> Function
Menu"' 'TAB 6;"Pa?e";TAB 13;"Line": INK 5: PLOT 0
,0: DRAW 0,175: DRAW 255,0: DRAW 0,-175: DRAW -25
5,0: INK 3: PLOT 8,8: DRAW 0,159: DRAW 239,0: DRA
W 0,-159: DRAW -239,0: INK 7
9999 STOP : RANDOMIZE USR 100: SAVE "«16.C1"SCREE
NS
The Menu Auto Loads as Needed
When we need the menu the program pulls it in
from disk with a line command < RANDOMIZE OSR 100:
LOAD "ml6.crsCREEN$>. Such menus "left in RAM"
would drastically depreciate the "record capacity"
of the software. This one menu, if left in RAM,
would reduce the number of records possible to
generate by 24 records (A One line record of 3i
characters). Some softwares NEED as many as 15
menus, which would cost up to 3K of memory to
include. So, the practice in the past has been to
"skimp on menus" and make the user REMEMBERj&at
keys to use for a miriad of functions.
7 *f7 fi$s
24
HOME OFFICE ON THE CHEAP
by Peter R. Hale
Cleaning computers, disk drives, printers and
assorted electronic gear around the home office
is recommended in every instruction manual but
none describe how it to do it.
Any one using tractor feed paper in a printer
knows how all those little paper dots flee to
the most inaccessible spots. Well, the printer
runs with all the garbage inside, so what?
In time, some one tells you that compressed air
is just the thing, but not everyone keeps an air
compressor in the home office .
When my salvaged Canon PC-25 photo copier began
producing ever darker copies, I dreaded the need
for major overhaul. I dropped by the local
repair facility to learn there was dust on the
most internal prismatic mirror and that for just
065.00 and a week in the shop it could be fixed.
Then I saw canned compressed air designed for
just this and other similar purposes (like
getting dust off the edges of the QL keyboard.)
Being a Sinclair computerist and by logical
extension cheap, I was reluctant to buy it even
after remembering the repair shop's estimate. I
thought that $9.95 (plus tax) was a bit much for
what is essentially a free item.
So I made an office air compressor from scrap.
You can, too. You need:
1) a strong, plastic bottle with a flip top cap,
such as shampoo, baby oil, ketchup, etc., have.
2) the feed tube, such as comes with trigger
operated cl eaning -sprays like 409 or Fantastic
or similar containers. These are long, flexible
and have a fine internal diameter.
3) a sharp pointed knife to ream out the hole in
the cap so that the tube fits though the hole,
4) a bit of cement to seal the tube in the hole.
Squeeze the bottle. A powerful jet is created.
The container can be held in any position and
the tube guided to whereever it needs to go.
It blows dust from between keys, paper dots from
corners of printers and it got the dust off that
deeply hidden prismatic mirror that had been
darkening my copies.
HOME OFFICE OH THE CHEAP, Part 2
by Peter R. Hale
The printer is one of the more difficult pieces
of computer equipment to locate in the home
office. Its. too big to fit on most desks, and
on other tables it wastes space.
There are printer cabinets in various sizes and
shapes that let you place tractor feed paper on
below the printer, but they are bulky and
expensive, and there is a lot of waste space.
The typical home office printer does not need a
lot of space. It's foot print is generally
under 12" deep and is less than 18" wide.
An inexpensive compromize is to modify a 30" or
36", double-doored kitchen wall cabinet into a
printer cabinet.
Such cabinets may be found cheap " at bargain
outlets, or even cheaper when a friend or
neighbor remodels a kitchen.
The internal depth is generally a full 1?" so
that 11" tractor feed paper fits on a shelf.
The cabinet may even have adjustable shelves.
Modifying the cabinet requires a 1x12 bo*rd as
long as the cabinet and a piece 3/4" moulding of
equal length. These should be attached to the
top of the cabinet with screws or (h«aven
forbid!) nails. Pre-drill holes as the cabinet
wood/particle board may otherwise split.
For mobility, four casters can be attached to
the bottom, but this is gilding the lily as they
will cost almost as much as the rest of the
materials, including the cabinet.
fsing a saber or key hole saw, cut a two inch
wide slot about 12" long in the rear of the
cabinet near the top for the paper to pass
through to a rear feed tractor. Alternatively,
a bottom feed printer can be accomodated with a
»imilar slot in the top shelf. Maybe have both.
The shelf can accomodate a full 2750 sheet
carton of tractor feed paper and there is space
for all kinds of other items to be stored, out
of sight and dust.
There are several advantages to this design. The
movement of the printer head is side to side, so
the 30" or 36" width cabinet provides great
stability. Second, the depth of the cabinet is
minimally intrusive into the room. Finally, it
is very cheap! m
Edi Grey
Enterprises
P.O. Box #2186, lngl«wood, CA 90305
Info » 213-759-7406 « Order
** SPECIAL THANKS **
TO
BILL. JONES
for EXCELLENCE in
URD ATE MAGAZINE
ond Best Wishes to
FRANK DAVIS
In This NEW Challenge!
Timex /SINCLAIR 4 CP/M Products
S.ih HE* ami USEO S.Uwmr. am4 Harlwarm
Fmr emrrmmi CATALOG scarf SASS (with 46 emmim r.ntz,.)
am4 S1.00 fwr »acm Ti max /SIN CLAIR ««V.r Ct/H taialam.
Cd The Grey Mx BBS I RCP/N (2MH30)
2,5:
PRINTING MACROS
Printers are all different, but aost
have lore capabilities than we are
usually capable of taking advantage of.
My KXP-1124 has hundreds of functions
that can be progressed. I've been
looking for a practical use of the
"Superscript and Subscript" nodes of ay
printer and have decided that these nodes
need soae user adjustments. This article
is done vith such adjustaents of the
subscript style. Actually it is the
"ELITE" style that gives 9€ characters
per page width PLUS Subscript. Now that
would give you characters that are
Saaller, but with no increase in the
noraal aaount of text on page. Not auch
use for that, eh?
To take advantage of a printer's
capability it is useful to set-up
"aacros" of programming that can be
MERGES to printing softwares when needed.
This is a group of four aacros to produce
a large aaount of printing on a page in a
"aacro" style that produces fairly
coafortable reading. We have the
following set-up done in a program line:
SET ELITE style + SET SUBSCRIPT. The
result is a 2/3 print HEIGHT that has
NORMAL LINE SPACING, which is too auch
spacing between lines for the reduced
height of the characters". So, we add
programming to reduce the LINE SPACING
from the normal "3/16 inch" to "one-tenth
inch spacing. This "Sounds" all too
complicated, but it isn't.
Next, we need the ability to print
Larger Headers. A header in small print
is not very attention getting. So, for
Headers we create a little utility that:
EXPANDS HEIGHT and EXPANDS WIDTH. All we
want is a "one time" expansion for
headers as needed. Then the utility
should RETURN to the pre-established
print style. AND, the header should be
CENTERED over the PRINT COLUMN.
ALSO, we need to SCHEDULE the number
of lines to print on a page. Since we
have reduced the spacing between lines,
aore lines can be printed on a page. If
ay math serves ae right, a noraal line of
€0 lines per page (at 3/16" spacing)
should produce 112 lines at .1" line
spacing. So, substract about 6 lines for
top and bottom margins and we get a
figure of 100 lines for a formatted page.
The Variables used will be:
LX=Maximum characters per line:
LL = Column Line Length: TB = LEFT TAB :
LN=Lines per page. Now follows are the
four coordinated utilities that can be
exercised by GO SUB from within an
operating program.
The ENTRY POINTS for GO SUB: <GO
SUB 2610> gets Elite STYLE, plus
SUBSCRIPT. <GO SUB 2612> Sets .1" line
spacing. <GO SUB 2616> is for larger
HEADERS, setting EXPAND HEIGHT and EXPAND
WIDTH. <GO SUB 2630 within the line>
reduces QQ column center and prints the
Header. Line 2610 re-sets QQ and CANCELS
Double Height and Double Width. This
coluan of printing is the result of using
these utilities with the Daisy. B6
Software. The reproduction is in actual
sise. My next Article "DbseX.B6" will be
done with Daisy and a different "Print
Macro" .
Many subscribers do not like such
saall print. Then, Just use the EXPANDED
heigth and width as is done in line
12616. This would give an improvement of
"Readers Digest Large Print edition".
Individual "macros", such as these can be
Saved to disk and MERGED as needed to set
up special printing styles and formats.
Name this set "Micro Columns".
2ti
Micro Colimis
Four Printing Macros
2610 LET a=VAL "2620": GO SUB a:
OUT 127,27: GO SUB a: OUT 127,7
7: OUT 127,27: GO SUB a: OUT 127
,83: GO SUB a: OUT 127,1: REM se
t ELITE+Subscrpt
2612 GO SUB a: OUT 127,27: GO SU
B a: OUT 127,43: GO SUB a: OUT 1
27,36: LET tb=6: LET ln=100: LET
lx=42: LET 11=42: LET qq=28: RE
M set .1" line space - 100 Lines
per page + vbls
2614 RETURN
2616 LET qq=12: LET a=VAL "2620"
: GO SUB a: OUT 127,27: GO SUB a
: OUT 127,87: GO SUB a: OUT 127,
l: GO SUB a: OUT 127,27: GO SUB
a: OUT 127,119: GO SUB a: OUT 12
7,1: GO SUB 2624: REM set Expand
height+Expand width+Col Center+
get header print.
2618 LET qq=28: GO SUB a: OUT 12
7,27: GO SUB a: OUT 127,87: GO S
UB a: OUT 127,0: GO SUB a: OUT 1
27,27: GO SUB a: OUT 127,119: GO
SUB a: OUT 127,0: REM re-set Co
1 center, cancel dbl hi, cancel
dbl wide.
2619 RETURN
2620 IF IN 1270VAL "237" THEN
GO TO a: REM check READY status
of printer, wait until ready.
2622 LPRINT TAB qq-LEN m$/2;m$:
LET nn=nn+l: RETURN : REM print
the header
2624 INPUT m$: RETURN : REM inpu
t the header
******************* CORRECTION *******************
********** OTHER USES FOR LARKEN RAMDISK *********
*************** ARTICLE APRIL 1990 ***************
**************************************************
Most humble apologies to anyone who tried to
create a BASIC AROS by following my instructions.
The following corrections will remove some of the
frustration: 1. The LOAD statements in two of the
sections of the article will need to have
RANDOMIZE USR 100 added. 2. In the "CREATING AN
ARCS" section: line 30 should have FOR X= 32763
not 52768. The instruction in para 6 should read:
OUT 244, 240: RANDOMIZE USR 100: LOAD "test. CI"
CODE 32776: OUT 244,0. Once again, sorry!! Larry C
**************************************************
SCREEN MACROS
The ftecro.B6" Program
A "Macro" is defined as a special bit of
programming that provides an often needed
function. Generally the term "macro" is used with
Desk Top Publishing and are associated with
specially constructed screens. In this case we
use a macro for a special text file. We can
create as many macros as we want to and at NO COST
of Free Memory. AND, we can print the macros any
time we want to by LOADING or MERGING this
program.
The program uses managed INPUTS of up to 22
Screen Lines to allow you to input formatted
lines. Then when the last line is input there are
choices to: PRINT, SAVE, or QUIT. The Screen is
SAVED as a special Macro Screen with a file name.
Later, at any time, you can re-load the screen
(with the "scopy.B6" program for print out. Or,
this program will itself allow you to PRINT the
macro, either individually, or mixed within a text
file that you may be printing.
The Screen holds up to 704 characters, which
is a nice size group. Screens are SAVED to disk,
using only two blocks of disk space. When they
are recalled for print out there is no cost at all
of Free Memory.
The screen can be considered as a "data base"
contained in a "high resolution String". The
screen is printed out in two ways, by High Res
isolation of "pixel" data, and in this case, by
low resolution isolation of screen Characters.
The data is organized "as in a character array"
like <DIM A$(22,31) >. But the screen coordinates
begin at zero. So to print a screen character in
the top left corner: < PRINT SCREENS (0,0) >. We
can pick off and LINE PRINT to paper all
characters in a screen with counters, as: < For
N=0 TO 21: FOR Y=0 TO 31: LPRINT SCREENS (n,y);:
NEXT Y: LPRINT: NEXT N >.
Given below the listing is a sample print out
of one of the Screen Macros used with the Daisy. B6
software.
Line 12444 contains a suggested way for page
control while the macro is being printed. Var
"nn" counts the lines and IF nn>=LN a page end
routine is called by <G0 SUB pe>. "LN" in this
case is the pre-set number of lines per page. A
typical Page End routine would be: >Line pe<
LPRINT' 1 'TAB 40;pg: OUT 127,12: LET nn=Q: LET
pg=pg+l: RETURN >. Enjoy! Bill Jones.
"nacro.Bf Create / PRINT / SAVE Screen Macros
Donated to Public Domain by Bill Jones
2442 CLS : INPUT "[1] Create Macro [2] PRINT MACR
0[3] SAVE [4] Quit";z: GO TO (z<l OR z>4)*2442+(z
=l)*2448+(z=2)*2444+(z=3)*2460+(z=4)*2462
2444 INPUT "Enter TAB";tb: FOR n=0 TO 21: LPRINT
TAB tb;p$(n+l): REM LET nn=nn+l: IF nn>=ln THEN
GO SUB pe
2446 NEXT n: GO TO 2442
2448 CLS : PRINT AT 5,2;"Build a Screen Macro"" '
TAB 2; "You may input up to 22 Lines. ""TAB 2; "The
Screen File will be SAVED"* TAB 2; "with the file
name that you input, with a "".C4"" extension
.""TAB 2; "ENTER WHEN READY": PAUSE 0: CLS
2450 DIM p$(22,31): FOR n=l TO 22: PRINT AT 21,0;
INVERSE I; "Input Line ";n; INVERSE 0: INPUT p${n
): PRINT AT 21,0;"
";AT n-l,0;p$(n)
2452 IF n=22 THEN GO TO 2458
2454 NEXT n
2458 FOR n=l TO 22: PRINT AT n-l,Q;p$(n): NEXT n:
PRINT 10; INVERSE 1; "Touch a Key for Menu": PAUS
E 0: GO TO 2442
2460 INPUT "DD I to Save to?";z: RANDOMIZE USR 10
0: GO TO z: INPUT "Input Name of MacroH;w$: LET w
$=w$+".C4": RANDOMIZE USR 100: SAVE w$SCREEN$ : C
LS : GO TO 2442
2461 DIM p$(l): INPUT "Enter Program Disk J";z: R
ANDOMIZE USR 100: GO TO z: GO TO VAL "2462"
2462 STOP : REM ** Install your GO TO Line here.
t. Tiis is i SCIIU IAOO
2. Seleetaile it tie Qaietie
»4 Office Too I j lean.
4. Bp tf 24 Liies aay ie iapat
5. Macros ire sm4 is SCIKH5
f. The \Cr bteasioa is use*
7. k Macro Fritter is iacliiea*
J. (He 'scopj.r profrai.
19. Friattif is to TAB coitrol
11. Macro Friitiaf titi scapy
eai le seaeJilea* to print
tie itcros aixet* titi text.
13. Lite leifti lie it is 32,
iit tie text liie eai le
uti for trap aroiti.
18. Tie iicros are lot ia Ul
aetory, so 701 lay ereate
as aaay as yoi Hie ia iisk
29. a Sereea iolls ip to 794
characters, tiiei is a aiee
little lata eiaat.
2,7
Copy Screens with "scopy,B6"
The "scopy,B6" Listing
Donated to Public Domain
By: Bill Jones
Now that we have a nice program to create
Screen Macros, lets key in another to PRINT
SCREENS "From Disk TO PAPER" . ""scopy.B6"" is a
program to do that. "scopy.B6" is a utility used
in the Daisy software to selectively print Screen
files in disk to be included "within text file
print-out". You can use scopy.B6 to do that, or
to load and use to print any disk Screen Pile.
The program ignores any graphics or drawings on
screen and prints just text data, making it useful
to insert "screen macros" into a text file being
printed.
There are two modes controlled by variable
"gg". One mode is to Print Disk Screen Piles from
a Menu presented at the bottom of a Catalog. The
other mode is to Automatically print a disk file
"within the print out of another text file". If
gg=0 the menu is presented. But if gg=l the menu
is by-passed and the screen file name that is
placed into WZ$" is gotten from disk for print
out.
The way to print a macro "automatically" from
disk "wi thing a text file" is to insert the
programming: <LET gg=i: LET z$="name of file in
disk": LET tb=TAB: GO SUB 7003>. The lines of the
screen file will print to the "existing TAB"
setting of the host software, using "tb=TABH.
Example: if your text were being printed at TAB
10, then LET tb=10. You can insert other controls
in the Command Program given above, such as to
count lines and execute a page end if the text
reaches the last formatted line of the page.
Example: Line f 7070 contains the
programming: LET nn=nn+l: IF nn>= LN THEN GO SOB
pe. In this case "nn" is a line counter, "LN" is
the LINES PER PAGE, and "pe" is a PAGE END routine
to end the page and start a new page.
If just wanting to print one or more Screen
Files (macros) then the way to do that is: Type
LET gg=0: GO TO 7003. Then the prompts take over.
First you are prompted for the Disk t to reach the
Screen Files. Then a Catalog is placed on screen
with a Prompt at bottom to "Input File Name". The
file is gotten from disk and printed to paper.
Then you are prompted to do another or to Quit.
The line and page controls are closed by REM,
Line 17070
7003 IF gg=l THEN GO TO VAL "7010"
7004 CLS : PRINT AT 10,0; "This is a Screen Copy 0
til ity"" "Prints Screen Files from Disk"" »'"<!>
Print a Screen File"""<2> Quit": INPUT a: IF a=2
THEN GO TO VAL "70 92"
7006 CLS : INPUT "Input left Margin? ";tb
7008 INPUT "ENTER Screen Disk i";dd: RANDOMIZE US
R 100: GO TO dd: RANDOMIZE USR 100: CAT ".Cf\: I
NPUT "Input Whole Title of Screen File";z$
7010 RANDOMIZE USR 100: LOAD z$SCREEN$
7020 FOR n=0 TO 21: LPRINT TAB tb-1;" ";
7030 FOR y=0 TO 31
7040 LET a=C0DE SCREENS (n,y)
7050 IF a>122 OR a<32 THEN LPRINT " ";
7060 IF a<122 AND a>31 THEN LPRINT CHR$ a;
7070 NEXT y: LPRINT : LET nn=nn+l: IF nn>=ln THEN
GO SUB pe
7080 NEXT n
7082 INPUT "<1> Another Screen <2> Q
uit";a: IF a=2 THEN GO TO 7092
7090 PRINT |Q;"Adjust Printer, then ENTER": PAUSE
0: GO TO 7008
Sample Screen Print Out, of one of the Daisy
Menus.
QUICKIE MENU
Touch Select
1. Typing 2. Re-ed 3. Store
4. HELP 5. DELETE BUFFER
5. View/ Edit Array Cells
7. Word Replace, Global
8. Input to L$ for PASTE-UP
9. Cycle Caps 0 Edit Seq DB
[:] Zap a DB [;] MACROS
[<] LOAD DB [=] SAVE DB
Info
Buffer= Cell Limit=
H-0 FREE= L$=
1-0 Touch Key to Select
28
April 23, 1990
a fcMy 77)' £^J>£ j4 #6
To Pi Qu - ~~
Dear Bill,
It was good to hear from you again. Sorry to hear about whatever
caused your hospitalization but hope that it's over for good.
Believe it or not did not even particularly notice UPDATE's
lateness. That's surely a sign of addl e-patedness or very
busy-ness on my part.
Your call for co-processing and Tim Stoddard's Trump Card's
Toolkit 2 article combined in my mind to produce some
experimentation. I can't recall seeing an article on the QL
network device other than Tim Stoddard's recent treatment. The
results, attached, may or may not be of Interest to the bretheren
(and cistern ?) I persist in this despite numerous beatings
about the ears by our many female offspring. They would call
that remark sexist; I think it's funny and harmless. When will
we ever be able to agree again?
As to slave co-processing on the QL , 1e. beyond the few
transparent efforts built-in and assigned to the MAB
whats-1 ts-number , termed a "redi rectabl e I/O system:"
Personally, I've yet to see a need for more. You, on the other
hand, sound as if you want a Cray on the desk.
Do even a small number of computerists (pretty high-toned, huh?)
wish to have a dialogue with Compuserve while doing a document?
And, 1f so, why not use Taskmaster or the poor-man's multl-tasker
that you sent me? ,
The end result of the notes, attached, sort of point in the
direction of slave co-processing but, for the Hfe of me, doubt
that I can come up with a practical use for same. Perhaps what
we (I) need is a seminar in "Uses". If there's a "use" I can
sometimes come up with a "way."
Have often thought about the ZX-81 and T/S 1000 sitting in a box
in our garage, along with the 2-64K and 1-16K memory paks, a Byte
Back RS 232 and Hunter board, and wondered what could they help
me do that I cannot already do reasonably well with just the QL?
That question has been unanswered for the many years now that
we've had our QL(s).
The connectlon(s) is/are there: the RS 232 ports! All that
remains 1s the programming and that 1s doable. But that
statement, for me at least, still evades the first and necessary
question: What to do with it once it's hooked up?
Even with my limited programming skills, was able to re-do
Psion's VU-Calc for the ZX-81 and make 1t print out the whole
spreadsheet to an 8 1/2 by 11 sheet of paper, 12 labled columns
across by 26 labled rows, to the Gemini 10X. And, for a number
of years, this worked well for our only use for same, a rather
complete Federal and State estimated and final tax program; even
with the 40 formulae limitation imposed by VU Calc. However,
once I temporarily got my hands on Lotus 1-2-3 (1n Rom on a PC Jr
yet), my VU-Cal c-1 s- just-f ine mentality changed forever. Later,
when I found I could get a QL AND an almost-Lotus-aHke for less
than the price of Lotus itself, we made the Investment.
John E. Juergens
18 Bryce Canyon Way
Paclfica, CA 94044
Bill Jones
c/o UPDATE Magazine
1317 Stratford Avenue
Panama City, FL 32404
2,9
But my point is, finally, that our QL purchase obsoleted (if that
really is a verb) our ZX-T/S and related equipment as far as our
use is concerned. After considerable (and continuing) thought I
simply cannot find a use for the old stuff that cannot be done
better or at least as well by/on the QL. Nor can I envision an
auxilliary (slave and/or co-processing) use that would NOT be
more trouble than it's worth. Don't wish to be heard to say
there isn't one, just that I've been unable to come up with one.
Hence, my suggestion, above, for a "Use" seminar.
Bill, the attached is pretty wordy, "Botts-1 i ke" if you will, so
wont take it amiss if you don't use it.
The QL Network device without Tool Kit 2
(an exercize in patience, perseverence and humility)
John Juergens
For the several or more years we've owned a QL I've been aware of the fact
that it's supposed to be able to "network." However, because we had not
perceived a use for network-ing and the paucity of articles about it the
device was never explored. Tim Stoddard, via his article on the Trump Card
Users' Guide, (UPDATE, Jan 1990), and Bill Jones' "slave co-processing"
article of the same issue, prompted my curiosity. Stoddard mentioned that a
number of bugs in the QL Rom affect network-ing adversely; he neglected to
mention that there are a number of bugs in the User Manual as well, equally
adverse-affecting. However, if one does not know how a thing works to begin
with bugs are not the big problem. Anyway, my curiosity continued and
resulted in the following:
First, some QL User Guide references used: INTRODUCTION, p. 11; KEYWORDS:
Copy, Load, Net, and Save (which is erroneous and should read SAVE neto 3);
and CONCEPTS, pgs. 17 and 34.
What can be done with NETWORK without Tool Kit 2? Probably, much more than
follows but at least one may, to a limited degree, manipulate one QL from
another.
Conditions: QL#1 is the master, ie. the keyboard of which you are operating,
and QL#2 is the slave. Both QL#1 and QL#2 are connected via the net plugs,
power is on and running in Superbasic ie. Fl or F2 have been pressed with NO
cartridges or disks in drive #1. The following commands have been given to
QL#2: Type net 2 : lrun neti_l and press ENTER. Now, put cartridges and/or
disks in QL#2 and go to the keyboard of QL#1.
To Print to the monitor or TV attached to QL#2 type the following program into
9 REMark This is Program 1
10 a$="ABCDEF"
20 FOR i=l to 100
30 PRINT a$;
40 NEXT i
50 LRUN neti_l
100 NET 1:SAVE neto_2, 10 to 50
Now type into QL#1: run 100 and watch "ABCDEF" appear 100 times on the left
side of the monitor attached to QL#2 or the single screen of a TV attached to
What has happened? First, when lrun neti_l was typed into QL#2 you may have
noticed the screen move as if clearing. You told QL#2 to "listen" for a
program coming in FROM net 1. You could instead have commanded QL#2 to lrun
neti_2, ie. "listen" for its own station number, NET 2, and the result would
have been the same.
Secondly, the small program, statement lines 10 to 50, was NOT intended to be
30
RUN on QL#1 even though 1t appears on the screen attached to QL#1. It was
Intended to be RUN on QL#2 and was sent to QL#2 via the SAVE statement on line
100. The SAVE statement used could as easily have SAVEd lines 10 thru 50 on
QL#1 to a microdrive cartridge or a floppy disk if line 100 were changed to:
100 SAVE mdvl Test, 10 to 50. Notice one difference however: The original
Line 100 did NOT use nor require a file name while SAVEing to mdv or flp does.
Why? I'm not certain but it seems reasonable that using NET is NEVER a
permanent storage facility, it's more like an intermediate, temporary
transmitting device than a tape or disk, each of which is designed to store
data later to be retrieved.
Why did QL#2 treat lines 10 to 50 on QL#1 as a program and RUN it? Recall the
original command given to QL#2: Irun net1_l. That told QL#2 to listen to the
net, (neti(n)), particularly for something coming from NET 1, treat it as a
program and LOAD and RUN (Irun) 1t, which it did. If you had commanded QL#2
to listen for its own station number, NET 2, eg. Irun neti_2, it would have
responded in exactly the same way BUT it would NOT have had to know in ADVANCE
WHICH station was sending to it in order to get the message; in this case,
lines 10 thru 50. The useful lness of listening to its own station number
becomes apparent with more than 2 QLs on the network.
l£oSl°m^B mb)°%$ h„f£?_0^ai ^dUi!8?sge^tflerC«8C5$Er »• 34' ta,ks
Why put 1n statement line 50? Because we wish to continue to keep QL#2 in
abject slavery to QL#1. If line 50 were not there QL#2 would have printed
"ABCDEF" 100 times and then gone off the network. To keep it listening,
always put in the statement contained in line 50. At this point go to the
QL#2 keyboard and press and hold CTRL while pressing the SPACE bar, then
release both; this 1s a BREAK and will release QL#2 from listening to the
network. You may have to type els #2:edit 10: ENTER: ENTER to see lines 10 to
50 displayed on the screen attached to QL#2*s but they are there, meaning that
QL#2 actually did LOAD (and run) the program originally typed into QL#1. The
program in QL#2 should differ from the one in QL#1 only in that line 100
should NOT be present in QL#2. Why? Because line 100 only transmitted
(SAVEd) lines 10 thru 50 to QL#2.
Is there another way to accomplish the same task? Not quite the same but
similar. It is mentioned only to demonstrate another point. Since the
CTRL-SPACE keypresses have interrupted QL#2's net listening, type load neti_2
and ENTER it into QL#2. Note that Net 2 does not require re-entering as once
done it remains until a power-off or reset occurs. Now, type into QL#1 the
following program:
9 REMark This is Program 2
10 OPEN #5,neto 2 : REMark Lines 10, 20, 40 & 60 are for QLIl only NOT QL#2
20 for 1*1 to 100
30 print IS/prinfABCDEFV : REMark Only print "ABCDEF" goes to QL#2
40 NEXT 1
50 print #5, 'LOAD neti 2' : REMark Only LOAD neti 2 goes to QL#2
60 CLOSE #5 ~"
and type RUN and ENTER it.
The main point to the above 1s that QL#2, having been given the LOAD command,
load neti 2, 1s put into a condition in which Its expected input has been
switched from the keyboard (type print "ABCDEF" and It prints it to the right
screen, channel #1 if viewing on a monitor or the only screen if viewing with
a TV but still channel #1) to another source of Input; namely, a file or In
this case what may be coming down the network.
When, for example, we have a program called BOOT on microdrive or disk, and
either is in drive 1, and we type, 1n the Command mode (our typing appears at
the bottom of the screen) load mdvl_B00T (or load flpl BOOT) we expect to see,
after the drive stops and typing edit 1 and ENTER, the program BOOT on the
screen with the statement line numbers arranged 1n ascending order.
What was NOT Immediately apparent was that the input into the QL was turned
over momentarily FROM the keyboard TO what was contained in the designated
file, mdvl_B00T. If BOOT had contained NO statement numbers (and we can
prepare such a program in Quill, SAVE 1t to mdvl as Test_doc, and LOAD It via
load mdvl Test_doc) the QL would have RUN the non-numbered statement lines
just as if they had been individually typed-in from the keyboard in command
mode and ENTERed. Remember, do NOT LRUN such a program, only LOAD It. The
RUNing will be automatic.
3.1
This type of Input has its limitations. If there are no statement line
numbers there cannot be any GoTos, GoSubs or, probably, any PROCedures. And,
if one decides to use it one must be careful that each line statement Is
correct and stands alone. However, that being said, the QL WILL execute such
a program and when it's done leave nothing to be observed 1n the way of a
?E?I!7i7\i ^n5-*6?" 0r in, mmory except for ^rlables which may have been
initialized, AND it Is very fast-running.
Back to Program 2: Lines 30 and 50 sort of require a split personality to
understand. However, they represent one of the two ways to use the network
facility. The first "print" in lines 30 and 50 tells QL#1 to send the
remainder of the statement line only to QL#2, 1e. don't print to QL#l's
screen. When QL#2 gets these It acts on them just as 1f they were typed Into
? # .1 keyboard in the command mode. The difference between Program 1 and 2
is that Program 2 requires QL#1 to do the FOR i loop and to send "ABCDEF" 100
times down the network to QL#2. Don't bother with a BREAK, CLS #2, EDIT 1
routine on QL#2 because there's no program behind the 100 " ABCDEF "s; not even
Program 1 because a LOAD or LRUN clears out any existing program. like a peek
if you wish but there should not be anything there. P
OPEN a channel and DIR a drive ON QL#2 FROM QL#1:
Send ONLY instructions to QL#2
first ENTER load neti_2 on QL#2
10 Remark This 1s Program 4
20 OPEN #5, neto 2
30 PRINT #5, 'OPEN" #6, neto 2'
40 PRINT #5, 'DIR #6,mdv2 T
50 PRINT #5, 'CLOSE #6'VToad neti 2'
100 RUN 20 to 60
110 CLOSE #5:0PEN #5, neti 2
120 REPeat loop
130 INPUT #5,a$:PRINT a$
140 IF E0F(#5) THEN EXIT loop
150 END REPeat loop
160 CLOSE #5
Send a Program to QL#2
first ENTER lrun neti_2 on QL#2
10 REMark This 1s Program 3
20 OPEN #5,neto_l
30 DIR #5,mdvl (or flpl or rami)
40 CLOSE #5 ~
50 LRUN neti_2
100 SAVE neto 2, 10 to 50
110 OPEN #5,n?ti_2
120 REPeat loop
130 INPUT #5,a$:PRINT a$
140 IF E0F(#5) THEN EXIT loop
150 END REPeat loop
160 CLOSE #5
Start both Program 3 & 4 with the command: GoTo (or RUN) 100
NB. Program 4, line 50, the backslash outside the single-quote marks sends a
Line Feed to QL#2 just as 1n an ordinary PRINT statement 1n Superbaslc. The
LF Is needed by QL#2 to execute the CLOSE #6 statement. This 1s similar to the
ENTER If you were typing 1n the line on the keyboard of QL#2. In the cases of
lines 30 thru 50, the fact that a semi-colon is missing from the end of each
statement line also ensures that a Line Feed will be sent after each line.
Load and Run QL#1 with a BOOT program residing on a drive In QL#2:
ENTER on QL#2: load neto_l if it is not so running.
ENTER on QL#1: open #5,neto_2:print #5, 'copy n mdvl to neto l':pr1nt #5, 'load
neto_l:close #5: lrun neti_l ~ ~
NB. If copy Is used instead of copy_n, QL#1 will stop with a "not found"
error report. Copyji gets Hd of the file header sending only the file data.
LOAD QL#1 with a Psion Program (QLWP, QLSS, QLDB or QLBG) residing on a drive
controlled by QL#2:
ENTER on QL#2: load neti_2 command
ENTER on QL#1: open #5,neto_2:pr1nt #5, 'copy mdvl QLSS to netol': print
#5, 'load neto__l': close #5: exec__w net1_l *~
Once running in either Abacus or Quill commands may still be sent to QL#2
provided that you "left It listening", either with lrun neti 2 or load neti 2,
by typing in the Instructions to Quill or a cell In Abacus~and printing tnem
to _neto_l, eg. F3,P, ENTER for display, ENTER range.N for no border, F for
f11e,_neto_2 for Abacus. Remember, no margins, headers, footers, etc. in
Quill and printing only the range 1n Abacus which contains the Instructions.
The other condition/limitation is that you must use the specially prepared
printer driver explained by Tim Stoddard In his article. I cannot see much
use for this but perhaps someone else may as I've not been able to figure a
way to bring 1n data to Quill or Abacus other than to load a file on a drive
attached to QL#2.
Am sure the above are not the only ways in which network can be used and I'm
equally certain that they may not even be the best. However, they are a
starting point for those interested in going further.
13 .
tztaa«=st=e — 1 FOR ~T~OS
6800 CLEAR 63423: LET AB=2: LET AD=4: LET AE=5s LET AF=6: LET AG
=7: LET BCMO: LET DH=48: LET YF=256: LET Ml=6804: LET M2=7020:
LET Di=7232: LET 02=7256: LET TS=9?20: LET ZB=9922
6802 POKE 23730,191: POKE 23731,247: GO SUB 9920: DIH N$(5,31):
INPUT 'LINE 1 OF YOUR LETTER HEADING" JN$(1): INPUT 'YOUR STREET
ADDRESS" ;N*<2): INPUT 'YOUR CITY AND ZIP CODE"5N*<3): INPUT "YOU
R NAHE'5N$(4}: LET N$(5>='Sincerely,": ON ERR GO TO 6804: DELETE
6800,6802
6804 ON ERR RESET : POKE VAL '2373Q\VAL '191': POKE VAL '23731"
,VAL '247": 60 SUB TS: BORDER SIN PI: PAPER SIN PI: INK AG: CLS
: PRINT AT AB,VAL ' 12" \ "DBASE-1 MENU" 'TAB AD;"<1> CREATE FILE"
'TAB AD5'<2> ADD RECORD" 'TAB AD?"<3> VIEW OR PRINT RECORDS" 'TA
B AD:'<4> CORRECT RECORDS" 'TAB AD;'<5> SAVE FILE" "TAB AD?"<6>
LOAD FILE" "TAB ADl'<7> SORT AND MANAGE" 'TAB ADi"<8> TO BASIC"
'TAB AD?"<7> LETTERHEAD OR SIGN OFF";#SIN PI? AT SIN PI,SIN PI?'T
OUCH SELECTION": PAUSE SIN PI: LET Z=CODE INKEYS-DH
6808 50 TO (Z<SSN PI OR Z>VAL "9")*VAL "6804"+<Z=SGN PI)»VAL "68
12"+(Z=AB OR Z=AD)*VAL "6B24'+(Z=INT PI)*VAL "7440"+(Z=AE)tVAL '
7264'+(Z=AF)*VAL "7272"+U=A6)*M2+<Z=VAL "8')*VAL '9999"+(Z=VAL
"9")*VAL "7530"
6812 CLS : PRINT AT BO,AF; FLASH SGN PI? "CONFIRM, START NEW; FL
ASH SIN PI";TAB AF;*<Y> YES -OR- <N> NO": PAUSE SIN PI: LET Z=C
ODE INKEY$-DH: IF Z=VAL '30" OR Z=VAL "62" THEN GO TO Ml
6814 CLS : DIM 0$(S6N P1,SGN PI): INPUT "NBR OF RECORDS (EVENLY D
IVISABLE BY 4)"5Ll: INPUT »NBR OF LINES" ,L2: INPUT 'CHRS PER LIN
E"?L3: IF Ll*L2*L3+Ll/AD»L2tL3+VAL "600"> FREE OR INT (Ll/ADKM.
1/AD THEN BEEP VAL \5",VAL '30': GO TO VAL "6814"
6818 DIM 0*<L1,L2,L3): LET <*=SIN PI: GO TO Ml
6824 aS : INPUT "START AT RECORD #?"?MS: INPUT "END RECORD #?"?
MX
6830 FOR (WIS TO MX
6834 IF Z=AD THEN 60 TO VAL "6850"
6838 IF Z=AB THEN GO TO VAL ,6864"
6840 NEXT 0: IF 0>MX THEN GO TO 6804
6842 STOP
6850 ON ERR GO TO VAL '7032": PRINT AT AB.SIN PI;"REC0RD # ";0':
FOR N=S6N PI TO L2: PRINT "LINE ";N'0$(0,N)': NEXT N: PRINT ""
O.K. ? <1> YES <2> NO <3> QUIT": PAUSE SIN PI: LET Q=C0DE INKEY$
-DH: IF Q^AB THEN GO TO VAL "6858"
6854 IF <MNT PI OR Q<SGN PI OR OMNT PI THEN GO TO Ml
6856 IF Q=SGN PI THEN CLS : 60 TO VAL "6840"
6858 INPUT 'ENTER LINE NBR TO CORRECT" 5 QL: INPUT "KEY IN THE NEW
LINE "»Y$: LET 0$(0,QL)=Y$: CLS : 60 TO VAL '6850*
6864 as : ON ERR 60 TO VAL "7032": FOR N=SGN PI TO L2: IF N>VAL
•9" THEN INPUT "RECORD NBR "+STR$ 0'+"KEY IN LINE # "+STR$ N+"
OR ZZ TO QUIT "?Y$: GO TO VAL "6867"
6866 INPUT "RECORD NBR "+STR$ 0'+"KEY IN LINE I "+STR$ N+" OR ZZ
TO QUIT "?Yi •
6867 IF Y$='ZZ' OR Y$="zz" THEN LET N<2: LET 0=MX: GO TO Mi
6868 LET 0$<0,N)=Y$
6872 PRINT AT VAL '19",SIN PlJ'LINE ";N'0$(0,N)': RANDOMIZE USR
VAL "2361"
6876 NEXT N
REVISED BY EARL DUNNINGTON
FROM THE LKDOS VERSION BY BILL
JONES, PUBLISHED IN THE JULY 89
ISSUE, PAGE 27. THIS VERSION RE-
QUIRES THE TOS DISK OPERATING
SYSTEM, THE OLIGER OR AERCO CEN-
TRONICS INTERFACE, AND THE ZEBRA
OS-64 CARTRIDGE.
At this point, you should
read the article by Bill Jones
that accompanied his program.
Due to the many options
available in this program, I
have spent a great deal of time
debugging it. I hope that I have
removed all of them, but this I
cannot guarantee. In some cases
only use by many people over a
long period of time, can uncover
all of the bugs. This version of
the program u»as designed for a
Smith-Corona Fastex BO dot ma-
trix printer using Pica pitch. I
do not think that this program
will require any changes due to
the use of a different printer.
In order to conserve memo-
ry, all REM statements have been
removed and several sections
were reprogrammed. The same se-
ries of line numbers for each
task were used. Hidden variables
and strings are used. Due to re-
programming of the ADD A RECORD
section, there is no longer any
prohibition against having more
than 12 lines in a record. This
version of the program will han-
dle a 80,7,31 file, however the
number of records in the file
must be evenly divisable by
four. This is so that the file
can be divided into four parts
for use in other programs such
as DAISY. B6.
All screen displays are 32
character and are switched to 64
characters for LPRINT operations
using Bill Jane's switching sub-
routines in lines 9920 and 9922.
33
-5880 €0 TO VAL '6840'
7020 BORDER SIN PI: INK AS: PAPER SIN PI: CIS : PRINT AT AB,SIM
PI; 'FILE HANAGBOT OPTIONS' ""1> REMOVE REPEATS"^/ REMOVE SKI
PS" ' ,3> HOVE ZIP TO LINE 4"'"*> SORT DATA JASE"'3> BREAK La FI
L£ TO 4 FILES AND SAVE""*} C0HBII€ 4 SHALL DISK FILES
TO 30RT"""7> SAVE A SORTED FIL£""8> LOAD A LARGE FIL£","9>
CLEAR iOCRY"""0> P&SENT KEY RECORDS <LINE 7 KEY*"
'•:> VIEW OR PRINT RECORDS*" j> TO DBASE! «EMUf: INPUT "INPUT CH
0ICEM2*: LET Z<ODE Z$-DH: IF Z>VAL '11' TO 50 TO ,12
7024 IF Z=AF OR Z>AS MN SO TO VAL "TOO"
7028 ON ERR SO TO VAL "7032": IF L£N M<1,1»1 THEN ON ERR SO T
0 VAL •7036*: STOP
7032 ON ERR RESET : OS : PRINT AT BO* SIN PI; FLASH 55N PI; 'NO D
ATA PRESENT": JEEP m Pit VAL '20': SO TO H2
7036 ON ERR RESET : SO SUB VAL '7162'
7050 SO TO CZ=SGN PIXVAL ^llO'+CZ^WAL "7132,+(Z=INT PI)*VA
L '7G70"*CZ=AD;*VAL ,7S354,HZ=AE)*VAL "72A0P+(Z=AF)*VAL "7280,*(
Z=AS)*VAL "7264"+(Z=VAL "8")*VAL ,7272'+(Z=VAL "9">*VAL "7126"+i
Z=BQ>*VAL '744Q'+(Z=SIN PI)«VAL "740Q"+{Z=VAL ,U,)«fll
7054 CLS : PRINT AT VAL "14", SIN PI 5 "THERE ARE "?L2?' LINES THAT
CAN BE SORTED.": INPUT 'INPUT LINE* TO SORT";SO: PRINT AT VAL "
13", SIN Pi; 'YOU HAY SORT BY FIRST 5R0UP OF LINE ";S0;" OR LAST S
ROUP:": INPJT "INPUT <1> FIRST OR <2> LAST'jSOL: IF SOL<S®l PI 0
R SODAB OR S0<S9I PI OR S0>L2 THEN CLS : SO TO VAL "7054"
7058 LET B$="": SO TO (SOL=SSN PI)*VAL "7364"+(S0L*AB)*VAL "7294
7074 CLS : PRINT "ZIP CODES TO LINE 4": FOR N=SSN PI TO L5: IF 0
$(N,ADMS0l PI)*1 " THEN LET H$=0$(N»INT PI)
7078 IF 0$<N,AD)tSGN PDO" " THEN 60 TO VAL "7094"
7082 IF H$(L£N «$>=" " THEN LET «$=«$( TO LEN H$-S6N PI): SO TO
VAL "7082"
7086 FOR 6=L£N H$ TO SSN PI STEP -SSN PI: IF W(6)=" ' THEN LET
0$(N,AD)=H$fS+SSN PI TO ): LET 0$(N?INT PI)=0$(N,INT PIH TO 6):
SO TO VAL "7094"
7090 NEXT 6
7094 IF N>L5 THEN 50 TO H2
7098 HOT N
7102 SO TO H2
7110 as : PRINT "REH0VIN6 REPEATS" : FOR N=SSN PI TO L5: FOR Y=L
5 TO N+S6N PI STEP -SSN Pis IF 0$(Y?SQI PI)=0$(N,S^ PI) THEN FO
R S=SGN PI TO L2: LET 0*(Y,6)='": NEXT 5
7114 NEXT Y
7118 NEXT N
7122 60 TO H2
7126 DIM 0$(SSN PI): DIM V$(S9J PI): DIH KKS6N PI): LET XX=SIN
Pi: 60 TO H2
7132 LET S=m PI: LET Y=36N PI: CLS : PRINT "REHOVINS SKIPS": F
OR N=SSN PI TO Li: LET X=SIN PI: IF W(N,S» PI)(S9I PI)*" " THE
N LET X=S0l Pi: FOR S=AB TO L2? LET 0$(N,S)=*': NET S: FOR Y=N+
SSN PI TO Li: IF 0$(Y,SSN PIHS8I PDO" " THEN FOR 5=S9I PI TO
L2: LET 0$(N,S)=0*(Y?3}: «XT S: FOR 5=SGN PI TO L2: LET 0*<Y,S5
="": C<T 5: SO T0 VAL "7142"
713S IF <=S© FI THEN NEXT Y
7142 >C<? N
The hidden variables are
assigned in line 6800 and the
hidden string variables in line
63G2, These lines are deleted in
the working copy of this version
of the program. An alphabetical
list of the- hidden variables is
as follows:
AB=2
AD=4
AE=5
AF=6
AG=7
BO 10
D 1=7232
02=7256
DH=48
INT PI=3
M1=6S04
M2=7020
SGN PI=1
SIN PI=0
TS=9920
YF=256
2B=9922
You will note my use of the
CAPS LOCK when programming. This
makes it easier to determine? in
dot matrix printouts? if a let-
ter is a lower case L? a lower
case I, oi" a numerical one. The
larger capitalized program
printout is also much easier on
the eyesight when typing pro-
grams into the computer, With my
printer, this is an upper case
o (O)and this is a zero (0).
After typing in the program
be sure to SAVE it as your Mas-
ter Copy before attempting to
RUN it.
When ycu RUN the program
the first time? you will be ask-
ed to supply the data for a
letter heading and signature
block. This is for use in making
out invoices or even using the
program as a simple word pro-
ses sor with which to write a
note or letter. I used it to
write and print this article.
When the DBASE 1 Menu
appears cn the screen? chcse
option S. This puts you back in
BASIC :n the *4 character -node
sc that ycu can SAVE the program
this time as your jerking copy.
3 k
71*6 GO TO N2
7162 as : PRINT 'FINDING DIMENSION OF 0$'": LET L3=SIN PI: LET
L2=SIN Pi: LET L1=SIN PI: FOR N=PEEK VAL ' 23627' +YF*PEEK VAL '2
362S' TO PEEK VAL '236*1' *YF*VAL * 236*2* : IF PEEK N=VAL '207' TH
EN LET L1=FEEK (N+AD)+YF*PEEK (N+AE) : LET L2=PEEX *N+AF)+YF*PEK
(N+AS): LET L>PEEK (N+VAL '3')+YF*PEEK (N+VAL »9'): SO TO VAL
■721D'
7166 NEXT N
7210 CLS : PRINT AT BQ,Qi'THE DATA BASE IS Of CiLli V?L2? V?L3
;•)•
7214 FOR N=3GN PI TO LI : ON ERR 50 TO VAL '7213': IF 0$(N,S5N PI
XSGN PIK>" " THEN LET XX=N
7216 NEXT N: ON ERR 50 TO VAL '7213': STOP
7218 ON ERR RESET s LET S_5=X.X
7220 PRINT eTJ£ LAST FILLED RECORD IS: »?L5
7224 PRINT "'PLEASE HAKE NOTE AND <ENTER>': PAUSE SIN PI: RETUR
N
7232 as : INPUT 'RE-INSTALL PROGRAM DISK, AND ENTER DRIVE ITS '
|D«: GO TO *WD: RETURN
7240 as : GO SUB D2: INPUT 'ARE THESE ALPHA OR ZIP FILES? <1> A
LPHA - <2> 2IP?'j A: INPUT 'ENTER STARTING FILE NBR?'|S4
7244 LET XX=S9I PI: FOR N=S® PI TO LI STEP LI /AD: DIM V*(L!/AD,
L2,L3): LET H$=CA'+STR$ S4+'.DAT' AND A<ABWZ"+STR« S4+'.DAT'
AND A>SW PI): FOR Y=S©I PI TO Ll/AD: FOR fi=SSN PI TO L2: LET V
$(Y,G)=0*UX,S): NEXT G: LET XX=XX+5GN PI: NEXT Y: SAVE m DATA
V$C): LET S4=54+S9I PI: NEXT N: CAT *'+.DAT': PRINT #SIN PIjAT
SIN PI,SIN PI j 'NOTE THE SAVED FILES,' "<ENTER>': PAUSE SIN PI: G
0 SUB 01: SO TO K2
7256 INPUT 'INSTALL DATA DISK, THEN ENTER DRIVE LTR'?D$: GO TO *
D$D: CAT *'+.DAT": RETURN
7264 ON ERR GO TO VAL '7032': CLS : 60 SUB D2: INPUT '<1> ALPHA
SAVE- OR <2> ZIP SAVE 'JAZ: INPUT 'ENTER FILE NBR?'; A: LET «$=('
A'*STR$ A AND AZ<AB)+<'Z'+STR$ A AND AZ>SGN PI): LET M$=tt$+'.QAT
•: SAVEt«$ DATA0$():G0T0«2
7272 CLS : GO SUB D2: INPUT '<!> ALPHA LOAD- <2> ZIP LOAD';A: IN
PUT 'INPUT FILE NBR TO LOAD *,*«$: LET H$=('Ae+M$ AND A<ABH('Z'+
MS AND A>SGN PI): DIM 0*<9GN PI.SGN PI,S9* PI): DIN V$(S®t PI,SG
N PI): LET M$=N$+\DAT': LOAD m DATA ON): GO SUB Dl: GO SUB V
AL '7162': GO TO H2
7280 as : GO SUB D2: INPUT 'MERGE <1> ALPHA OR <2> ZIP FILES?' ?
AZ: INPUT 'INPUT START FILE NBR TO MERGE' JM: LET «$=CA'+STR$ «
AND AZ<AJ)+(»Z'+STR$ N AND AZ>S5N PI): DIM 0$(S9i PI): LET M$=*$
♦'.DAT': DIM V$(S® PI): LOAD m DATA 0$(): as : GO SUB VAL '7
162': DIM 0$(L1*AD,L2,L3): LET XX=SGN PI
7282 FOR Y-2SN PI TO AD: DIM WSGN PI): LET M$=('A'+STR$ M AND
AZ<AB)+{'Z'+STR$ M AND AZ>S® PI): LET M$=M*+'.DAT': LOAD #N$ DA
TA V$(): LET M=M+SGN PI: FOR G=S9I PI TO Ll: FOR I=S» PI TO 12:
LET 0*<XXtIi TO L3)=VI(5tIi TO L3): NEXT I: LET XX*XX+59I PI: N
EXT 5: NEXT Y: DIM V$(SGN PI): BEEP S« PI, VAL Ml': CLS : LET X
X=S®J PI: 50 SUB VAL '7162': 'OS : PRINT 'FILES 'iCA' AND AZ<AB
)+('Z" AND AZ>S9I PI)?N-AD?' TO 'JM-SGN PI?' ARE COMBINED AND 8
S.*DY TO S0RT."'3TER)': PAUSE SIN PI J 50 SUB Di: SO "0 *2
7:<5i ^5 : P9INT 'REVERSING GROUPS IN LINE FOR N»S5N °I TO
L5: LET 3f*3t(N,5«}i
35
As this new -contains hidden var-
iables and strings^ you must not
use RUN or CLEAR. Save the pro-
gram on a different disk using
SAVE*" DBASE!" LINE 6SG4, This
then becomes your working copy,
be sure that any changes are
also made in your Master Copy.
Dbasel Evolution
In this issue is another
TREMENDOUSLY VERSATILE data base
program called "Dbx.B6M. Both this
TOS Version by Earl, and the Dbx.B6
program, are off-shoots of the program
HDbase-lM given in the July 89 issue.
Since Earl left some margin space I'll
propound upon these programs and give
the readers some insight to more that
is to come.
It is intriguing that Earl
printed his text with this Dbasel
program, which is really a "Record"
Data Base program. The Records are
"user flexible" so that the Dbase can
be used for any purpose. The most
common use is a Mail Pile, a Telephone
Listing, or an Inventory Data Base.
But, as you can see, Earl found a way
to use the program as a Word Processor
as well. T.O.S. Disk users are
fortunate to have the services of Earl
Dunnington to provide this and other
programs in a form that can be used
with TOS Disk.
The original article about Dbasel
in the July 89 issue created much
interest in using the TS-2068 Vars
area for managing data bases. And Why
Not! Sinclair Computers manages the
vars area much better and provide much
more capability THAN ANY OTHER
COMPUTER marketed now or before! IBM
computers, for example, limit the LEN
(length) of string arrays to 255
characters while Sinclair Computers
have no practical limit. This whole
group of paragraphs can be tucked into
a character array (and it is). We
dont have to worry about FINDING the
7300 IF BSUiN !*>=• " THEN LET B$=BS( TO LEN 3$-S$i PI): IF L£N
B*>AE THEN 50 TO VAL '7300'
7304 FOR S=L£N 3$ TO S5N PI STEP -891 PI: IF 5=S3Y PI MN 50 TO
VAL '7316"
7308 IF B$(S)=* ' MN LET 0$<N,S0)=8$(S*SSN PI TO LEN »)+' '+B
$( TO 5-S91 PI): 50 TO VAL '73I6'
7312 NEXT 5
7316 IF N>=L5 THEN 50 TO VAL •7364"
7320 NEXT N
7324 60 TO VAL '7363'
7332 FOR N=€9« PI TO L5: LET H$=0$(N,SO)
7336 IF H*(LEN »)«' ' AND LEN «$>£« PI THEM LET H$=H$( TO LEN
«$-SSN PI): 50 TO VAL '7336'
7340 IF LEN !"!$=4£ THEN NEXT N: 60 TO VAL '7352'
7344 FOR Y=S5N PI TO L3: IF H$<Y)=' ' THEN LET 0$(N,S0)=*$(Y+S6N
PI TO )+' Mm( TO Y): 60 TO VAL '7352"
7348 NEXT Y:
7352 IF N>=L5 THBI 50 TO VAL '7396'
7356 NEXT N: 50 TO VAL '7396'
7364 PRINT 'SORTING, LINE 'JSO
7368 DIM V$(L2,L3): LET N=L5: LET I=N-SGN PI: FOR J=S6N PI TO I:
LET K=J+=9i Pi: FOR L=N TO K STEP -S« PI
7372 IF 0$(L,S0)(S6N PI TO AD)=' " THEN 60 TO VAL '7384'
7376 IF 0$(L.90)>0$<J»S0) THEN 50 TO VAL '7384'
7380 IF 0$<L,S0)(SS< PI TO AD)<>' ' THEN LET B$=0$(L,S0): FOR
X=SGN PI TO L2: LET V$(X)=0«(L,X): NEXT X: FOR X=Sei PI TO L2:
LET 0$(L,X)=0$(J,X): NEXT X: FOR X=SSM PI TO L2: LET 0$(J,X)=V$(
X): NEXT X
7384 NEXT L
7388 NEXT J
7392 IF SOL=AB THEN 50 TO VAL '7332'
7396 OS : PRINT AT BO,ADi'S0RT COMPLETE*: BEEP 1,18: PAU£ VAL
•200': G0T0K2
7400 as : PRINT AT BO,SIN PIJ'INPUT KEY WORD*: INPUT Y$: INPUT
'<!> VIEW OR <2> PRINT OUT';Z: IF Z=AB THEN INPUT 'TABT'iTB: INF
UT 'NBR LINES PER PA6E?';LN: INPUT 'PAGE NBR?'iPS
7404 LET W=SIH PI: FOR N=S6N PI TO L5: IF 0$(N,A6)C TO LEN Y$)=
Y$ THEN 50 SUB VAL '7412'
7408 NEXT N
7412 IF Z=S6N PI THEN PRINT 'RECORD* ';N
7416 IF 2=AB THEN 60 SUB ZB: LPRINT TAB TB?'RECORD# ';N: LET NN=
NN+S6N PI
7420 FOR Y=S5N PI TO L2: IF Z=S9I PI THEN PRINT 0$(N,Y>
7424 IF Z=AB THEN LPRINT TAB TB;0$(N,Y): LET NN=NN+S9I Pi: IF Ml
>=LN THEN LPRINT '"TAB VAL '40'jP6: LET PS=PS+S6N PI: LET W=5l
H Pi: 50 SUB VAL '7436'
7428 NEXT Y
7432 NEXT N: IF Z=S3i PI THEN PRINT tSIN PI?'<ENTEH> FOR MENU':
PAUSE SIN PI
7434 SO SUB TS: 60 TO H2
7436 50 SUB TS: PRINT #SIN PI;'SE3V!CE PRINTER THEN <ENTE2>': PA
USE SIN Pi: 50 SUB IS: iETURN
74*0 LET SPC*SIN Pi: LET RETAIN PI: LET LN*/AL 'S*': LET NN=SIN
Pi: OS : PRINT ISIN PI; AT SIN PI, SIN Plf'VIEM OR PRINT OUT?"'
3.6
data for editing. The Sinclair Rom
does that for us. We can shift data
about using simple basic commands <LET
A$=H$(3)>, etc.
Back in the July 89 issue I
promised to bring in a set of Machine
Code utilities to provide faster
SORTING of the Dbasel Records. These
sorting utilities have been done and
will be presented in a follow on issue
of Update. Don Lamen is the author of
these MC utilities. When the MC
utilities are given they will be
adaptable to Earl's TQS program given
here, and for the Sort functions of
the Obz.BS program given elsewhere in
this issue. Then an Update of the
original Dbasel program that uses the
MC sorting will be given also.
Dbasel goes beyond any software
that I am aware of to MSort and Manage
Disk Data Piles". Lets set up a straw
man for talking purposes. Lets say
that we have set up several different
"Record Piles" using either this
program, or the "Dbz.B6" program. One
file is a simple one liner Telephone
list created with Dbz.B6. It has 1000
"one line" records, a typical record
being "McManus, Robert A. 425 872
6657". Since we are highly socialized
we have 4 such telephone files in disk
(4000 names and tel nbrs). Another
type of Record Data base is a Mail
File. It is similiar to our Telephone
list but has 5 lines in each record,
typically: Line 1= "Mr. John A.
McManus": Line 2="4416 Main St.": Line
3="Peroria, IL 49665-2416": Line
4="49665": Line 5="John,".
Now the versatility provided by
"sorting choices" will come into
focus. We could sort by "First Group"
to sort the Telephone listing.
"McManus" would sort. For the Mail
List, we could Sort BY LAST GROUP OF
LINE 11 of the records. Then
"McManus" would also Sort. Or, we
could SORT BY LINE 4 LAST GROUP, which
would sort by Zip Code. Any line can
be sorted by either "first group of
last group" within the line. This is
true for both Dbasel and Dbz.B6. But
<1> VIEW <2> PRINT OUT". PAUSE SIN PI: LET X=CODE INKEYS-OH: IF
X>AB THEN 50 TO VAL '7W
7442 IF X=A3 TOJ INPJT •ENTER STARTING RECORD" JHS: INPUT 'EM IN
5 RECORD?' 5«X: INPUT * ENTER NBR OF LI!€3 TO PRINT (4 FOR LAB
ELS)"}LP: IF LP=AB THEN INPUT "RETURN LABELS TOO? <
i> YES OR <2> NO'JRET
7444 IF x=AB TI€N SO TO VAL •7480"
7448 PRINT «SIN PI; AT SIN PI,SZN PI?'<1>HH0LE RECORDS -CR""<2>
SINGLE LIhES? ": PAUS SIN PI: LET R=CODE INKEYHJH: IF
R=AB THEN aS : INPUT 'ENTER RECORD LINE NBR TO VIEW "JUL
7454 CL3 : PRINT KIN PI5AT SIN PI,SIN PIJ'TO DISCONTINUE, JAB <
BREAK)": PAUSE VAL '200": CLS
7460 ON ERR 50 TO VAL ,7468': IF R=S©I PI THEN FOR N=S©I PI TO L
l: PRINT N: FOR 5=SSN PI TO L2: PRINT 0*<N,S>: NEXT 6: PRINT : N
EXT N: STOP
7464 IF R=AB THEN FOR ft=SGN PI TO LI : ON ERR SO TO VAL '7468': ?
RINT N'OMN,RL)x PRINT : NEXT N
7468 ON ERR RESET : PRINT *<ENTER> FOR «ENU': PAUSE SIN PI: CLS
s €0 TO HI
7480 0.S : INPUT 'TAB?' J TB: INP'JT 'DO YOU WANT AN OUTLINE FORMAT
? <1> YES OR <2> N0'?T32: INPUT 'INPUT NBR SPACES BETWEEN RECOR
DS?'?SP: INP'JT "DO YOU WANT PAGE CONTROL? <1> YES OR <2>
NC'lPSC: IF PSC=5®i PI THEN INPUT 'PAS #'?P€: INPUT 'SET PRINTE
R AND INPUT # LINES PER PASE?';LN
74S2 PRINT AT yAL '8',AB,"Y0UR SET-UP IS:"*TAB AB? "PRINT RECORD
S "?«Si' TO "irtX'TAB AB?'PRINTINS LINES 1 TO "JLP'TAB AB?'AT TAB
NTT TAB AB? 'SPACES BETWEEN RECORDS- "jSP's IF PSC=S6N PI THEN
PRINT TAB AB;'PA6S=";PS'TAB AB,*"L1I€S PER PASE*"JLN
7483 IF RET=SGN PI THEN PRINT TAB ABj"RETUfttl LABELS WILL PRINT1
7484 IF TB2=SQ1 PI THEN PRINT TAB AB; "OUTLINE FORMAT'
74S6 INPUT "CORRECT? <1> YES OR <2> NO'iZ: LET TBXTB+INT PI AS
D TB2<AS)+(TB AND TB2>S6N PI): IF Z=AB THEN 60 TO VAL "7440"
7488 ON ERR SO TO VAL "7498": GO SUB ZB: LET NN=SIN Pi: FOR N=fB
TO HXi FOR Y=S9 PI TO LP: LPRINT TAB (TB AND Y<AB)+(TB2 PM Y>
SGN P1)',0$(N,Y): SO SUB VAL "7510": NEXT Y: GO SUB VAL "7516"
7490 IF PSOSSN PI AND NN>=LN THEN SO SUB VAL "7500"
7494 fOT N: IF PSC=S6N PI AND NN>SIN PI AND NN<LN TON 60 SUB T
S: INPUT 'PRINT LAST PAS # ?""<i> YES OR <2> NO THEN <ENTER>"?
Z: IF Z=SSN PI THEN LET SP=LN-NN: SO SUB ZB: 60 SUB VAL '7517"
7495 IF RENSGN PI WEH CLS : SO SUB TS: PRINT AT BOtSIN PlJ'SER
VICE PRINTER FOR RET LABELS" "THEN PRESS <ENTER>": PAUSE SIN PI:
SO SUB ZB: FOR Y=SSN PI TO HX: FOR H=SQi PI TO INT PI: LPRINT N
$(N): NEXT N: LPRINT : LPRINT : LPRINT : NEXT Y
7496 SO TO HI
7498 SO SUB TS: SO TO VAL "7032"
7500 50 SUB ZB: LPRINT "'TAB VAL "5Q";PG: LET P6=PG+S©I PI: LET
NN=SIN Pi: 50 SUB TS: PRINT AT BO, AB J1 SERVICE PRINTER, THEN <EN
TER>": PAUSE SIN PI: SO SUB ZB: RETURN
7510 IF PSC=S9I PI THEN LET NN=NN+SGN PI: IF W>=LN THEN 50 SUB
VAL "7500"
7512 RETURN
~5la I" *SC*S-aN sl AND NN>=LN T&H 50 SUB VAL '7500': €TURN
"517 SO SUB 23: FOR 5=S5N PI TO 3P: LPRINT : IF =SC=S5N PI THEN
LET NN=NN+='3N Pis IF NN)=LN ^HEN 30 SUB VAL 'TSOO': IETURN
6 <) I*
37,
Dbasel carrys it further and allows
you to SORT DISK FILES. lou can sort
the 4 "Telephone Lists" that are in
disk. Or you could sort any number of
Mail Files that are in disk. The
sorting is "against each file in
disk", providing a re-save of all
files in numeric order.
Both programs use similiar
protocol. When a file is LOADED from
disk the program finds the "Dimension"
of the file for management needs.
When SORT is ordered, if sorting by
"last group" the program first
reverses the sorting line. Then a
sort is done by sorting the first
group within the line. When Sort is
finished the sorting line is restored
to its original form. Example: Mr.
John McManus would be changed to
McManus Mr. John. When sort is
finished the line would be restored to
Mr. John McManus. If sorting by Zip
code, and the line were "Panama City,
FL 32404" the sort would reverse to
put the zip code first, then sorting
would occur, then all zip codes would
be returned to last group in the line.
The Machine Code utilities will
greatly speed up the operation. Right
now if you want to sort several disk
files having many records it becomes
an over-night "sort while you sleep".
You just wouldn't believe the number
of operations that take place to sort
several disk record files! It is in
the millions of operations! Included
in the sorting is "Removing Repeat
Records" in all files, and
"Reordering" each file so that there
are no Blank Records in the interior
of the files.
So, the coming Machine Code
utilities will make Dbasel very fast
in handling disk data files. In the
meantime, we can get accustomed to
operating a very versatile data base
program for creating and managing
large Record files for any purpose.
7518 NOT 5: RETURN
7530 CLS : INPUT '<!> LETTERHEAD OR <2> SIGN OFH'JLS: IF LS=S®
PI THEN INPUT '<1> SINGLE OR <2> MULTIPLE?' ;SM
7531 50 SUB ZB
7532 IF L3=S9i PI AND 3H=AB ftEN FOR Y=S® PI TO MX
7534 IF LS=S5N PI THEN FOR H=S® PI TO INT PI: LPRINT TAB VAL "2
8MN$(N): IOT N: IF 3H=AB THEN OUT 127,12: fCXT Y
7526 IF LS=AB THEN LPRINT "'TAB VAL •30*?ltt(AE),"TAB VAL "30":
N$(AD)
753 50 TO HI
9920 CLS : OUT VAL '255*,SIN PI: OUT VAL '2U\SW PI: BORDER SI
N Pi: PAPER SIN PI: INK AS: CLS : RETURN
9922 CLS : OUT VAL '255SVAL *62": OUT VAL '244MNT PI: IM( AS:
POKE VAL "65523'SVAL '80': RAIffiOHIZE USR VAL ' 15623': RETURN
9999 50 SUB ZB: STOP
£ % (*
fhe OS-64 Screen
I notice that this program for
TOS, by Earl, is for use with the
Zebra OS-64 cartridge that implements
the 64 column Screen. For those who
do not have the OS-64, careful editing
can be done to eliminate the 64 column
screen calls and use the standard 32
column screen. Earl is invited to
follow up in the next issue with
guidance as to which lines to modify
for 32 column screen. For those who
DO have the QS-64f I have an article
in works that is a complete word
processor for use with the OS-64
cartridge. Look for it in a coming
issue of Update. JJJ-
The Official Journal o* the Capital Area Timex /Sinclair Users Uroup
NEWSLETTER
Newsletter
Memberships cost $15 per year, are good for 12
months, and include all privileges (access to
libraries, group buys, etc.). A newsletter only
subscription is available for persons living
outside the Washington Metro area and is $12
per year.
CATS BBS: (301) 588-0579. 8-N-l. 300/1200
baud. News and general information, 24
hours a day.
CATS Newsletter
RO. Box 11017
Takoma Park. MD 20913
3.8
TRUMP CARD USER'S GUIDE
by
Tim Stoddard
INTRODUCTION
I have been using three TRUMP cards now for about a year
and a half now, and I have noticed that there is no real
'USER GUIDE' available. The very small manual that comes with
the TRUMP card outlines the syntax ( sometimes incorrectly )
but gives very few examples. These series of articles will
bring to light some of the very powerful features of the
TRUMP CARD and TOOLKIT II via real usable examples. The
articles may be assembled into a user guide at some future
time, if enough interest is shown.
I welcome all critiques and suggestions. I want this
user guide as accurate as possible. Feel free to write via
UPDATE MAGAZINE or my home. If you wish an answer please
include S.A.S.E. envelope.
Tim Stoddard
85-48 66th Road
Rego Park, NY 11374-5212
You can also reach me via CompuServe ( 73127,2664 ), Genie (
xtx53868 ), or Prodigy ( BGCX06A ).
A note before we begin: In this series I will sometimes use
more than one consecutive underscore. These are hard to see,
so please bear with my LQ500 printer and watch the length of
the underscore! Examples:
_ ( 1 underscore )
( 2 underscores )
( 3 underscores )
DIRECTORY CONTROL
ONE of the more powerful UNIX- like features of QJUMP's
TK2 supplied with the TRUMP CARD is it's handling of file
names as a directory structure. For instance, consider the
file name FLP1_EDT_BIN . BIN is an acronym for BINARY. Some
software companies will also use EXE ( an acronym for
EXECUTABLE ), or in Digital Precision's case: TASK. In any
case, this extention is added on to indicate that this file
is an executable program. To start this program without
TOOLKIT II you would need to key in:
exec f1p1_edt_bin < ENTER >
QJUMP's TOOLKIT II has commands that set default
directories. and all file commands have been enhanced to use
these defaults. You could use the default by first setting it
using the command:
prog_use flp1_ < ENTER >
Then, all that needs to be entered to start EDT is:
exec edt_bin < ENTER >
Using QJUMP's short EXEC name of EX you only need to type in:
ex edt_bin < ENTER >
There are two other defaults that can be set: 1) where
data is read from and 2) where data is written to. These two
defaults are used by such commands that have a source and/or
a target file spec. Examples would be:
copy source, target
2.9
dir source
load source
view source
The source file spec is set using the command:
data_use flp2_
The target file spec is set using the command:
dest_use flp2_
NOTE that these three defaults are looking for djUaeJfiCifiS
and not filets. TK2 automatically adds an underscore to the
directory named. For instance, executing:
S ^pTies a path of f1p2_t_, and you can verify that
this is the case by executing:
dlist
which gives the current paths for all three defaults You
will see that the trailing underscore was added by TK2. As an
example :
data_use flp2 doc
would seem to imply that you would 'select' " '"^J
in ' doc'. This is almost true! Remember, TK2 adds t he
iraiTing underscore to make the path actually f]P 2__doc_
and this would also select a file named doctor_txt .
NOTE: The two underscores together imply a wildcard match
with anything.
For example the following files are in RAM2_:
net_doc
doctor__txt
test_txt_doc
database ram2_ i ^executed. ^ .^.^ ^ ^ Qf
The single underscore between ram2 and doc
implies NO wildcard match and so the
__i *.! — miict nPRTN with 'doc . The
i injj i i .... ,
selection MUST BEGIN with doc .
following prints out:
doctor_txt
dir doc is executed, implying a path of ram2 doc
° ~ Use dlist to check the path. The double
underscore will match a file spec with doc
anywhere in it. The following prints out:
net_doc
doctor_txt
test_txt_doc
The target default file spec, dest_use works the same
way as the data.use but describes the target file spec. For
40
example executing:
dest_use flp2_ sets the target file spec to flp2_
wcopy ( imp! ies wcopy ram2_ to flp2_ ) will
copy al 1 our above files from ram2_ to
flp2_. NOTE that I did not have to
describe a source and target. WCOPY used
the defaults we set with data_use and
dest_use: ram2_ & flp2_.
Now adding a source modification
wcopy doc
wcopy _doc
( lmpjj.es wcopy ram2_doc_ to flp2_ ) will
copy only doctor_txt to flp2_ since only
that file begins with 'doc'.
( impl ies wcopy ram2 doc_ to flp2_ )
will copy all three example files to
flp2_ since they all contain 'doc' in
their file names. REMEMBER the double
underscore signals a wildcard match!
Adding a target modification will allow coping and renaming
wcopy doc to xxx
wcopy _doc to _xxx
wcopy _doc to xxx
( impl ies wcopy ram2_doc_ to flp2_xxx_ )
will copy ram2_doctor_doc to
f 1 p2_xxxtor_tx t .
( impl ies wcopy ram2 doc_ to flp2 xxx_ )
copies all our files changing the 'doc'
to ' xxx ' .
( ijnpJies wcopy ram2 doc_ to flp2_xxx_ )
copies all three files while renaming the
'doc' to 'xxx' AND because the target
mod i fj er has no double underscore ( no
wildcard ): any of the filename to the
left of the match will be truncated! Our
three files would copy over as:
ram2_net_doc — > flp2_xxx
ram2_doctor_txt — > f lp2_xxxtor_txt
ram2_test_txt_doc — > flp2_xxx
Note: this last operation would cause us to lose the file
originating as ram2_net_doc since ram2_test_txt_doc would
also be copied over as flp2_xxx overwriting the first copy
over.
You are not limited to a one-for-one text match for example:
wcopy _doc to _x
causes the three files to copy over as:
f lp2_net_x
f lp2_xtor_txt
f lp2_test_txt_x
And. . .
wcopy _doc to _1 234567
causes ....
flp2_net_1 234567
f lp2_1234567tor_txt
flp2 test_txt_1 234567
41
Interestingly, although the manual does not cover this,
adding further concurrent underscores does help us! For
instance:
wcopy
_txt
( implying ram2 txt to flp2_ ) NOTE the
THREE concurrent underscores above! This
would copy over only files with 'txt' i_n
the second position! These files would
copy to ram3__:
doctor_txt
test_txt_doc
wcopy doc ( imp! ying ram2 doc to flp2_ ) NOTE
FOUR concurrent underscores above! This
would copy over only files with 'doc' in
the third position! The only file to meet
this requirement is:
test_txt_doc
Try some of the other file commands now and experiment!
dir
dir doc
dir _doc
dir doc
dir txt
dir doc
wstat txt
wdel doc
A variation of the default target file spec command dest_use
is spl_use. Its only difference is that it does not add the
trailing underscore to the default file spec. Its intended
use is to set the target default to a device such as: serl or
n2_ser1. You are not restrained from using a file name,
however. For example:
8pl_use flp2
Use command dlist to verify that there is
no trailing underscore.
then. . .
wcopy
Will produce error message 'not found'
since a device MUST end with an
underscore.
spl_use f1p2_test
wcopy
These two commands will now copy and
rename all files originating in ram2_ to
f lp2_test! ! !
AND the intended use....
spl_use serl
wcopy
Sets the destination to serial port #1.
copys all files to that serial port.
Navigation is straight-forward and as the manual states it.
Those commands are:
ddown name
dup
Down one level to name. Use Dlist to
ver i f y .
Up one level .
42
dnext name Up one level, then down to 'name'.
dlist Prints the current defaults to channel#1 .
dlist #channel The same, but to a specified channel,
diist \name DOES NOT WORK!!! Gives error message 'bad
parameter' .
The \name parameter, although it does not work with dlist, is
a very handy parameter! Try this with a printer attached to
ser 1 :
dir \ser1
wstat \ser1
jobs \ser1
and if you have the HOT KEY system
hot_list \ser1 Works great!!!
file names also work
dir \f1p2_1ist Copies the directory to file 'list' on
flp2_.
dir \f1p2_list,flp1_
Copies the directory of flp1_ ( not
default of ram2_ ) to file 'list' on
flp2_. NOTE THE COMMA separating the name
parameter from the requested device.
Finally, there are functions that allow your SuperBasic
programs to use the set defaults.
datad$ returns the data default
progd$ returns the program default
destd$ returns the destination default
ED HOTE: Tim Stoddard's TRUMP CARD MANUAL began in the January 1990 Update
Magazine with PART 1. Other parts will continue in coming issues of Update
Magazine. I consider Tim's manual to be one of the most important series of
articles ever done for the Sinclair QL. The Trump Card System has so very much
power that is not articulated in the tiny manual supplied with the hardware. Even
so, the tiny Trump Card Manual has much information, albeit brief. My Trump
manual has been "blown up" to full page size, which is really the only way to
digest the information. Tim's articles in January Update, this one, and the
continuations, will open up the gate for us to learn much more about the use of
the built-in tools of the Trump System. If you dont have the January issue of
Update, you may order it along with the 1990 year series of 4 issues ($18.00 to:
Bill Jones, 1317 Stratford Ave., Panama City, FL 32404)
43
mmm: "Golf Micro Electronic* (Silt Jwtu' little. 49ftmvu koau}
1317 Stratford Ave., Panama City, PL 32404
All I have right now is "DJISI.B6" j The biggest and wsi comprehensive software ever produced for the
TS-2068.
Daisy. B6 is for the LKDOS SYSTEM. It Manages the disk drive as if it were a part of the Computer's
Memory. Daisy takes up 3 360K disks or two 720K disks. It is a complete system for TS-2068 LKDOS.
To give you a clue as to its vastness, the "Dbx.B6" software given in this issue is an "annex* of the
Daisy System, included in disk 12. AID so are the three 'Macro" programs given in this issue! Plus MCSE.
This Daisy System started out as my Smart Text software and has evolved over the three years of
publishing Update Magazine. Daisy is used for 90% of the data base and print management that you see in
this magazine. If you can do better print management, tell me what you use and I'll buy it. If you have
LKDOS you should have the Daisy System that really takes full advantage of LKDOS. If you dont have LKDOS
it is worth while to BUY it to get the full functions of the Daisy System. Daisy + 80 page Manual- $29.95
post paid.
Watch for "mini daisy" for TS-2068 cassette systems (a hit of reverse engineering). Mare good things
coming as Frank takes over publishing Update! (and I have more time), -ti&ppg Computing! Sill Jofu^_
Stan
EMSof iz
Software for the QL that works hard
Now has in-stock the very best true
WYSIWYG QL word-processor: text87
v3.00 with spell check and several
new features,
help 1 ine) .
(includes 1
hr USA
$94.95
Tax-time means TAX-t-QL/89 $24.95
ROOD AID WIMD COHPJIIHS
A IEH SOFTS ARK RELEASE !!!
QLERK : A powerful accounting progran for the QL $75.00 on 2 disks
QLERR is an ARCHIVE based accounting program for hoae and business. It
includes payable, receivable, and general ledger wdules integrated with uy
address database program, DEAddres. QLERK has check writing and invoicing
built in. It eren keeps track of your VISA, Master Charge, or other charge
cards. Bank balancing is easy with QLERK' s help. lou can display all your
checks and deposits and conpare then with your bank statements. lou don't
have to use a predefined account coding system. Ton can use the one you want.
Rben you run the general ledger, each account is individually tallied making
income tax time a snap. It makes a general ledger export file for ABACUS.
I have developed QLERK o?er the past 3 years working with several businesses.
I have many, many hundreds of hours of development work in this program. I
have been careful not to release it too soon but now feel it is ready. At
$75.00 QLERK is a pretty expensive piece of software but for those who want
to keep track of their finances it has no equal on the QL and will quickly
pay for itself. It has many features that more expensive PC accounting
software like Peachtree and DAC Easy fail to include like adding new fendors,
customers, accounts or products on the fly. The address database features are
second to none for being able to target subgroups for mailing labels or other
purposes. A PC version of QLERK using PC ARCHIVE is also in the works.
Don't send noney for QLERK. To order QLERK first send a request for a more
detailed description and special order form that will ask for necessary
information. Each purchaser of QLERK will get a custom copy of the software
with their home or business embedded in the code.
Bill Cable : RR3 Box 92 : Cornish, IH 03745
k 603 675 2218 J
RECIPE
INVENTORY
TRUST_FUND
QLAND_LORD
MAILBAG
DBTutor
D8Progs
CD I R /BOOTS
_dbf
_dbf
_dbf
_dbf
_dbf
_dbf
_dbf
SBas
$14.95
$9.95
$24.95
$24.95
$24.95
$24.95
$19.95
$3.95
On 5.25" DO or QD disks. On 3.5"
mi crocartr i dge add $2.00.
FREE CATALOGUE
EMSof t
P.O. Box 8763
Boston MA 02114
(617)889-0830
Two tough things to find" for your
Tlmex oc Sinclair ZX/T3 computer —
30LID INFORMATION S OOOO CONNECTORS
YOU KNOW WHERE TO GET THE BEST INFO
FOR YOUR ZX/TS-- SYNTAX, SQ, S THE
FOYT BOOK CHECK IT OUT— ASK ANYONE-
THEN GET ' EM ALL FOR
JUST $19.95 plus $10 SSH
BUS CONNECTOR & EXTENDER 6 HOUSING
LIKE A PRINTER CONNECTOR
Keyed Connector, Extender PC Board
PLUS Molded Black Plastic Housing
Fits: 2X80 £
TS1000 £ 1500
PC3300
ZX/TS SUBSET
OF SPECTRUM
4 2060
Pfcg o£ 3, ONLY 313.95 plus *2 SSH
SAVE Buy 2, get a FREE one
9 for S26.95 + $6 SSH SAVE
SMS, Box 9753, aoston, MA 021H-3763
617-389-0830 VISA & HC Add 4\
End
update issue disks
All Issue Disks are undergoing up-dating by the
authors and re-release to Frank Davis for
release in the neit (Oct) issue. Actually, the
authors own these programs and Update Magazine
acts as the distributor.
For now you may order Issue disks at the same
price ($22.00), and receive either the original
title of an up-dated version. (See listings of
issue disks in past magaxine issues).
Two new TS-2068 issue disks released in this
month's magazine are: The "Dbx.B6" software for
the LRDOS System and "Dbasel" for the TOS disk
system.
The TS-2068 software "Daisy. B6" has been
withdrawn as an Issue disk and is being offered
separately by its author (Bill Jones). This is
due to the extensive manual that is supplied and
the need for direct coordination with the author
for continuing service and up-dates as they
occur. All other TS-2068 and QL issue disks
have been given to Frank Davis for his
coordination with the authors and re-release.
I believe that you can expect even more new
software to be offered in the Issue disks in the
future. Also, Frank Davis has full capability
in ALL TS-2068 and QL DOS systems, plus both 3
1/2 and 5 1/4 inch disk drive support.
QL users can expect GREAT NEKS about the QUANTA
LIBRARY. Paul Holgren, an associate of Update
Magazine, is the new Quanta Librarian for North
America. Xou may contact Paul through Update
Magazine, or directly at 5231 Hilton Hood Ct.,
Indianapolis, IN 46254.
TS-2068 Issue Disks
(Specify type DOS, 40 or 80 track drive.)
1. "Dbx.B6" (see article this issue). For
LKDOS ONLY. Hill be converted to other DOS
systems and announced.
2i DbflSCl (see Article in this issue.) For
TOS DISK ONLY. Order directly from: Earl
Dunnington, 12198 Forrest Greens Drive, Boynton
Beach, FL 33437.
SINCLAIR QL ISSUE DISKS (MDV)
The following issue disks are offered for QL
systems of all configurations. The programs are
an either 80 track Diskette or MDV cartridge.
If ordering for MDV send a formatted MDV
cartridge. All prices are $22.00 (post paid) and
are guaranteed to satisfy.
1. "HftRTOffG COIiBCTIOH" DISK
Address and 090 file managers, plus a raft
of disk utilities. All in Superbasic. Lots of
tricks and hints for the progranmers . Requires
some knowledge of Superbasic or a yen to learn.
2, "FENG pTer" DISK
QLOTer - QL UTilities to un-clutter your
disks and tapes. COPY, DELETE, FORMAT, PRINT,
VIEW functions. TURBO compiled for SPEED.
Multi tasks and miniiml key press. Also has—
SNAP SHOT - a directory col urn or condensed
print out program. ALSO includes "vDGEMAT** - a
CLOWE making program.
3. "FENG pSTer" DISK
QLOSTer - very siirdliar to QLUTer (above)
but has extended functions using some SUPER
TOOLKIT II features. Ton must have the Toolkit
(TK2JECT) for this program. SNAP SHOT and
VEGEmat also included.
4. CABLE ARCaiVE DISK
ARCHIVE utilities and exensive doc file
instruction manuals. Programs are: REFIELD,
SCAN, SPLIT, JOIN, DIR, FILER, FREQ. For
Beginner to Advanced user. These programs
GREATLY EXTEND the capabilities of ARCHIVE and
the manuals lead one to complete understanding
of Archive and these extensions.
U otdtrung ion. MDV Mnd tan mdv ctuvtxidqiA- too
may/ puogxauM to fit into arte csvxt.
5. "CABLE HELPER2" DISK
A very useful TOOLKIT program for managing
both DISKS and MICRODRIVE. HELPER lets you copy
from one medium to another, Read or Copy doc
files to paper or screen, repeat format mdv
carts or floppy. Uses screen windows to see two
directories from and to, copies over existing
files in disk mdv, copy selected files. Does
not conflict with TK2.
Order to UPDATE Magaxine, address on cover.
Check or money order accepted.
4.5!
*#> SHOW SPECIALS <**
Even if you couldn't make it to Mi lwaukie-
Here are a few SPECIALS that we want to offer yous
SPECIAL tl;
RMG#0475 5.25w DSDD D I SKETTES--REG $ 8.95 SALE * 6.95+SH
(PAK OF 25 WV SLEEVES St WP TABS)
(ADD $3.50 SHIPPING)
SPECIAL 12;
RMG#0240 NOVELSOFT SUITE (2068) -REG $19.95 SALE $16.95+SH
(ADD $4.00 SHIPPING)
SPECIAL j3j
RMG#0406 PIX-FX (2068) REG $19.95 SALE $16.95+SH
(ADD $3.50 SHIPPING)
SPECIAL 14:
RMG#0682 CHOCOLATE SOLUTION (QL) REG $240 SALE $190+SH
(MSDOS EMULATOR W/DOS 4.0)
(ADD $5.00 SHIPPING)
SPECIAL t5:
RMG#0635 3.5" PREM DSQD DISKETTE-REG $10.95 SALE $7.95+SH
(PAK OF 10 80 TRACK)
(ADD $3.50 SHIPPING)
SPECIAL 16;
RMG#0165 MITSUBISHI VIDEO PHONE--REG $799.95/PR SALE $300/PR
THESE ARE * FULL-FEATURED * PHONES!
RED I AL-COMPUTER MEMORY/D I RECTORY-SEND/RECE I VE
P I CTURES-SPEAKERFONE-MULT I L I NE CONNECTOR/
SWITCHBOX-WALL OR DESK MOUNT-BATTERY BACKUP
ADD $25 PER PAIR SH I PP I NG/ I NS.
If any of these appeal to you, just send your order to the
address on the other side of this sheet or call us!
We accept MASTERCARD and VISA cards as well as C.O.D. ordes.
There is a 4% surcharge for bankcards and add $3.50 for C.O.D. .
The above specials are for a LIMITED TIME ONLY!
ALL OFFERS EXPIRE AS OF 8/31/90 OR WHEN SUPPLIES ARE GONE!
HAVE A GREAT SUMMER!
RMG ENTERPRISES
1419 1/2 7TH STREET, OREGON CITY, OR 97045
VOICE: 503/655-7484 NOON- 10PM PT TUE-SAT FAX: 503/655-4116 24HRS
WE ACCEPT VISA/MASTERCARD
4b